Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты

Закрытая тема
Настройки темы
[архив - Часть 2] AutoIt скрипты

(*.*)


Сообщения: 36496
Благодарности: 6676


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 27-01-2008
Внимание!
Тема переведена в архивное состояние







(настоятельно рекомендуется к прочтению/поиску)


Руководство к действию по работе c AutoIt.


Сайт программы
Русская справка
Коллекция AutoIt скриптов от Sanja Alone
Коллекция AutoIt скриптов от MSFN (могут быть устаревшие).
Справочник по командам rundll32 (команды запуска диалоговых окон и не только...)

AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо).



Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров.
Цитата Vadikan:
В теме уже свыше 500 сообщений и поиск нужной информации в ней усложняется. Есть предложение собрать все решения (скрипты) и разместить их на Wiki по принципу "один скрипт - одна статья wiki", добавляя статьи в категорию Autoit. Речь, в принципе, идет об общих решениях, а не о скриптах для установки конкретной программы. Название статьи, очевидно, должно отражать назначение скрипта. Затем можно в шапке просто разместить ссылки на статьи Wiki.

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:02, 05-02-2006

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Maza Faka,
PID я получаю по пути к запускному файлу (_PathIsProcess()), но не тут проблема, всё(?) дело в функции _SysTrayIconPids().

amel27,
Цитата:
может эту UDF тоже подправить и обрабатывать ВСЕ иконки как безымянные, т.е. по индексу?
Гинеально!!! Работает!!!
Спасибо!!!

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 08:36, 27-09-2007 | #501



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


Как правильно создавать многомерные массивы? Например функция ProcessList возвращает двумерный массив:
Код: Выделить весь код
$list = ProcessList()
for $i = 1 to $list[0][0]
  msgbox(0, $list[$i][0], $list[$i][1])
next
По аналогии пытаюсь создать свой двумерный массив, но не получается:
Код: Выделить весь код
Global $TestArray[4][4] = [[3, "First", "Second", "Third"], [3, "John", "Steve", "Arnold"]]

For $i = 1 To $TestArray[0][0]
    MsgBox(0, $TestArray[$i][0], $TestArray[$i][1])
Next
Работает только, если сделать так:
Код: Выделить весь код
MsgBox(0, $TestArray[0][$i], $TestArray[1][$i])
Кто нибудь может разжевать

Отправлено: 09:33, 27-09-2007 | #502


Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


amel27
Ты ГУРУ!
Сделал так:
Код: Выделить весь код
#include "SysTray_UDF.au3"

$ListArray = ProcessList("LA.exe")

MsgBox(0, "Hide", "Now hide is Light Alloy icons")
For $i = 1 To $ListArray[0][0]
    $index = _SysTrayIconIndex($ListArray[$i][1])
    _SysTrayIconVisible(1, $index)
Next

Sleep(1000)

MsgBox(0, "Visible", "Now visible is Light Alloy icons")
For $i = 1 To $ListArray[0][0]
    $index = _SysTrayIconIndex($ListArray[$i][1])
    _SysTrayIconVisible(0, $index)
Next
Работает!

P.S.
Может сообщишь автору, о том, что изменил его библиотеку и теперь её можно считать не бетой, а релизом.
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:59, 27-09-2007 | #503


Аватара для Angelus

Пользователь


Сообщения: 52
Благодарности: 0

Профиль | Отправить PM | Цитировать


А как заставить GUI интерфейс использовать рисунки которые вшиты в EXE файл???

Отправлено: 10:00, 27-09-2007 | #504


Ветеран


Сообщения: 916
Благодарности: 34

Профиль | Отправить PM | Цитировать


Т.е. закрыть языковую панель таким способом, что я предложил не получится?

-------
All my homies dont play better watch what you say and put your glock away, ease back, ease back, ease back before i squeeze that...


Отправлено: 10:13, 27-09-2007 | #505


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Maza Faka,
Цитата:
Как правильно создавать многомерные массивы?
Я если честно сам до сих пор точно понять не могу, но для себя сделал функцию (не всегда подходящюю правда), которая создаёт двумерный массив из строк по разделителю:

Код: Выделить весь код
#include <Array.au3>

Dim $Array = _Array2DCreate("Jimmy|Mike|George", "0|1|2")

_ArrayDisplay($Array)

Func _Array2DCreate($1DStr, $2DStr, $Delim="|")
    Local $2DArray[1][1], $iUbound
    Local $BiggestArray = StringSplit($1DStr, $Delim)
    Local $SmallestArray = StringSplit($2DStr, $Delim)

        If UBound($SmallestArray) > UBound($BiggestArray) Then
        Local $TempArray = $BiggestArray
        $BiggestArray = $SmallestArray
        $SmallestArray = $TempArray
    EndIf

        ReDim $SmallestArray[UBound($BiggestArray)]

        For $i = 1 To UBound($BiggestArray)-1
        $iUbound = UBound($2DArray)
        ReDim $2DArray[$iUbound+1][2]
        $2DArray[$iUbound][0] = $BiggestArray[$i]
        If $SmallestArray[$i] <> "" Then $2DArray[$iUbound][1] = $SmallestArray[$i]
    Next
    $2DArray[0][0] = $iUbound
    Return $2DArray
EndFunc
“Ведущий массив”, это самый большой найденный массив .

Angelus,
Цитата:
как заставить GUI интерфейс использовать рисунки которые вшиты в EXE файл???
Смотря для чего, обычно можно использовать GuiCtrlSetImage(-1, "File.exe", 0)
Где 0 это имя ресурса изображения в Exe'шнике.

SAOPP,
Цитата:
закрыть языковую панель таким способом, что я предложил не получится?
Ты так и не ответил на мой вопрос:
Цитата:
может есть уже открыто подобное окошко где то? перезапустить систему пробовал?
У меня это работает

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Последний раз редактировалось Creat0R, 27-09-2007 в 15:43. Причина: Поправка в коде

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:56, 27-09-2007 | #506


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Maza Faka
Цитата:
Ты ГУРУ
да ну брось - скрипт содержал весь нужный код... хотя не совсем понятна мотивация автора при выборе алгоритма, может из соображений производительности?
Цитата:
Может сообщишь автору, о том, что изменил его библиотеку и теперь её можно считать не бетой, а релизом.
это надо просить Creat0R'а, я на офсайте редко бываю... его вопрос, ему и обосновывать перед автором

Отправлено: 12:44, 27-09-2007 | #507


Ветеран


Сообщения: 916
Благодарности: 34

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
может есть уже открыто подобное окошко где то? перезапустить систему пробовал? »
Да нет, нету ничего. Ни на виртуалке ни на реальной машине ничего не происходит...

Сейчас протестировал, на виртуалке всё работает, хм странно, надеюсь это трабла этой ОС, поэтому думаю при установке на реальную машину скрипт сработает

-------
All my homies dont play better watch what you say and put your glock away, ease back, ease back, ease back before i squeeze that...


Отправлено: 14:31, 27-09-2007 | #508


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Многие (и наверное я сам) тут спрашивали, как копировать большой файл, и при этом получать данные прогресса...
Так вот, используя быстро набирающую популярность на оф. форуме библиотеку DllCallBack.au3, можно этого добиться очень просто!!!:

Код: Выделить весь код
#include <DllCallBack.au3>

_FileCopyEx("C:\BigFile.avi", @ScriptDir & "\BigFile.avi")

Func _FileCopyEx($Source, $Dest)
    If Not FileExists($Source) Then Return SetError(1)
    ProgressOn("_FileCopyEx() Demo", "Копирование, ждите плиз...")
    $pCopyProgressRoutine = _DllCallBack("_CopyProgressRoutine", "uint64;uint64;uint64;uint64;dword;dword;ptr;ptr;ptr")
    DllCall("kernel32.dll", "int", "CopyFileExA", _
        "str", $Source, _
        "str", $Dest, _
        "ptr", $pCopyProgressRoutine, _
        "ptr", 0, _
        "int", 0, _
        "int", 0)
    _DllCallBack_Free($pCopyProgressRoutine)
    Sleep(1000)
    ProgressOff()
EndFunc

Func _CopyProgressRoutine($TotalFileSize, $TotalBytesTransferred, $StreamSize, $StreamBytesTransferred, $dwStreamNumber, $dwCallbackReason, $hSourceFile, $hDestinationFile, $lpData)
    $Precent = $TotalBytesTransferred/$TotalFileSize*100
    ProgressSet($Precent, "Проценты: " & Round($Precent, 1) & " %")
    Return 0
EndFunc   ;==>_CopyProgressRoutine
Вот и всё!

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:19, 28-09-2007 | #509


Аватара для TERMINAL

Ветеран


Сообщения: 753
Благодарности: 28

Профиль | Отправить PM | Цитировать


Creat0R, а как можно сделать если мне, например, нужно скопировать целую папку ( I386 c диска)и чтобы прогрес был и показывал сколько осталось минут и процентов? Можешь помочь?

-------
Автоматизация прежде всего....


Отправлено: 17:28, 28-09-2007 | #510



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? DreDo Хочу все знать 4 01-12-2009 18:54
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. Vadikan AutoIt 1543 18-01-2009 10:46
[Архив - Часть 1.3] AutoIt скрипты biork AutoIt 503 09-06-2007 11:27
[Архив - Часть 1.2] AutoIt скрипты Dirk Diggler AutoIt 505 02-12-2006 11:00
[Архив - Часть 1.1] AutoIt скрипты EgOrus AutoIt 335 04-02-2006 16:58




 
Переход