[Архив - Часть 1.3] AutoIt скрипты
-
Yozhegg
Re: [Архив - Часть 1.3] AutoIt скрипты
VelDmi
Цитата:
Yozhegg
Цитата:
А нет ли для AutoIt какой-нибудь рисовалки форм?
А то очень долго координаты с "дизайн-макета" списывать..
Здрасте, а как же koda designer?
А что это такое ( koda designer? )? к AutoIt отношение имеет?
Цитата:
Yozhegg
Цитата:
А нет ли для AutoIt какой-нибудь рисовалки форм?
А то очень долго координаты с "дизайн-макета" списывать..
Здрасте, а как же koda designer?
А что это такое ( koda designer? )? к AutoIt отношение имеет?
-
mrak1990
Re: [Архив - Часть 1.3] AutoIt скрипты
Creat0R
Разобрался наконец с твоим скриптом. Но остался один маленький вопросик:
Код:
В скриптах AutoIT нужно при объявлении массива указывать в квадратных скобках число элементов? Если так, то почему ты приписываешь "+2", а не "+1"?
Разобрался наконец с твоим скриптом. Но остался один маленький вопросик:
Код:
Код: Выделить всё
Local $WinListArr[$WinList[0][0]+2]В скриптах AutoIT нужно при объявлении массива указывать в квадратных скобках число элементов? Если так, то почему ты приписываешь "+2", а не "+1"?
-
Diamond
Re: [Архив - Часть 1.3] AutoIt скрипты
Creat0R
Цитата:
При первом запуске выдаёт два совпадения и что скрипт уже запущен, хотя это не так.
У меня всё нормально, хотя если запускать его из редактора то обнаруживается лишнее "совпадение".
Цитата:
Кстати, а можно ли как то получить список скрытых процессов?
Думаю, что процесс будет скрыт только от "Диспетчера задач Windows" и подобных ему, т.е. от WMI он не скроется.
amel27
Цитата:
к сожалению он полезен только в учебных целях...
Действительно к сожалению...
Наверное что-то вроде этого я и искал, но не ожидал что это будет работать именно так...
В любом случае, Спасибо!
Цитата:
все остальные способы будут оффтопом для этой ветки.
Любой способ который можно использовать в AutoIT, или который имеет прямое отношение к скрипту AutoIT, разве это оффтоп? Хотя...
Скажем, я хочу знать какие программы запускали на моём компьютере в моё отсутствие.
Проблема в том, что более опытный юзер может легко обнаружить и завершить мой "шпионский" процесс.
У меня возникла идея не скрывать, а просто сделать невозможным его завершение, т.е. скомпилировать скрипт и назвать его к примеру lsass.exe.
Хотя и примитивно - зато надёжно.
Цитата:
При первом запуске выдаёт два совпадения и что скрипт уже запущен, хотя это не так.
У меня всё нормально, хотя если запускать его из редактора то обнаруживается лишнее "совпадение".
Цитата:
Кстати, а можно ли как то получить список скрытых процессов?
Думаю, что процесс будет скрыт только от "Диспетчера задач Windows" и подобных ему, т.е. от WMI он не скроется.
amel27
Цитата:
к сожалению он полезен только в учебных целях...
Действительно к сожалению...
Наверное что-то вроде этого я и искал, но не ожидал что это будет работать именно так...
В любом случае, Спасибо!
Цитата:
все остальные способы будут оффтопом для этой ветки.
Любой способ который можно использовать в AutoIT, или который имеет прямое отношение к скрипту AutoIT, разве это оффтоп? Хотя...
Скажем, я хочу знать какие программы запускали на моём компьютере в моё отсутствие.
Проблема в том, что более опытный юзер может легко обнаружить и завершить мой "шпионский" процесс.
У меня возникла идея не скрывать, а просто сделать невозможным его завершение, т.е. скомпилировать скрипт и назвать его к примеру lsass.exe.
Хотя и примитивно - зато надёжно.

-
mrak1990
Re: [Архив - Часть 1.3] AutoIt скрипты
Yozhegg
Цитата:
А что это такое ( koda designer? )? к AutoIt отношение имеет?
prokazzza
Цитата:
Можешь доделать вот такой скрипт, я тут не нашел куда вставить имя rar архива и что будет если убрать из скрипта строчку ProcessWaitClose('INSTALL.exe') она мне не нужна.
Доделать не могу, так как не знаю цели мероприятия... Имя архива передается в командной строке и заносится в переменную $sfx, причем это SFX-архив. Убрать строчку можно, но тогда скрипт завершит работу раньше установщика.
TERMINAL1. 1 января какого года? При условии, что Test.exe это AU3-скрипт:
Код:
2. В "маленьких хитростях":
Цитата:
А что это такое ( koda designer? )? к AutoIt отношение имеет?
http://www.autoitscript.com/fileman/...ormdesign.html
prokazzza
Цитата:
Можешь доделать вот такой скрипт, я тут не нашел куда вставить имя rar архива и что будет если убрать из скрипта строчку ProcessWaitClose('INSTALL.exe') она мне не нужна.
Доделать не могу, так как не знаю цели мероприятия... Имя архива передается в командной строке и заносится в переменную $sfx, причем это SFX-архив. Убрать строчку можно, но тогда скрипт завершит работу раньше установщика.
TERMINAL1. 1 января какого года? При условии, что Test.exe это AU3-скрипт:
Код:
Код: Выделить всё
#Include
$point = StringReplace(_NowCalcDate (), '/', '')
If $point > '20060101' Then
MsgBox (16, 'Ошибка', 'Время пробной эксплуатации истекло!')
Exit
EndIf
; ...2. В "маленьких хитростях":
Маленькие хитрости автоустановки
-
Diamond
Re: [Архив - Часть 1.3] AutoIt скрипты
Завершение процессов и служб
Некоторые процессы невозможно завершить с помощью ProcessClose() т.к. они имеют отношение к службам.
А если такой просесс завершить принудительно, (например с помощью консольной команды TASKKILL) то в журнал системных событий записывается сообщение об ошибке, и потом что либо найти в нём с каждым разом становится всё труднее...
Всё это навело меня на мысль написать скрипт:
Код:
Некоторые процессы невозможно завершить с помощью ProcessClose() т.к. они имеют отношение к службам.
А если такой просесс завершить принудительно, (например с помощью консольной команды TASKKILL) то в журнал системных событий записывается сообщение об ошибке, и потом что либо найти в нём с каждым разом становится всё труднее...
Всё это навело меня на мысль написать скрипт:
Код:
Код: Выделить всё
$ProcessName="oodag.exe" ; имя завершаемого процесса
;~ Подключаемся к WMI:
$WMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
$PID = ProcessExists($ProcessName) ;Определяем PID
If $PID Then ProcessClose($PID) ; Если существует - пытаемся убить
If ProcessExists($PID) Then ; Если процесс всё ещё существует тогда
$OutputName=CheckService($PID) ; проверяем принадлежность процесса к службам (проверку можно пропусить!!!)
If Not $OutputName=0 Then ; Если является службой тогда
$Pressed=MsgBox(262144+32+4,"", "Не удалось завершить процесс поскольку"& @CR & _
"он является запущенной службой: " & $OutputName & @CR & _
"Остановить службу?")
If $Pressed=6 Then KillService($PID) ; Если "Да" - останавливаем службу
EndIf
EndIf
;~ ==================================================
;~ Определяет, является ли процесс запущенной службой (Эту функцию можно исключить!!!)
;~ Если является службой - возвращает "Выводное имя" службы, в противном случае 0
Func CheckService($PrPid)
;~ Формируем текст запроса:
$QueryText = "SELECT * FROM Win32_Service WHERE ProcessId = '" & $PrPid & "'"
;~ Создаём объект-коллекцию:
$CollectionServices = $WMI.ExecQuery($QueryText)
If $CollectionServices.Count > 0 Then ; Если элементов коллекции > 0 Тогда
;~ Цикл по элемент(у)ам коллекции:
For $objItem In $CollectionServices
Return $objItem.DisplayName
Next
Else
Return 0
EndIf
EndFunc
;~ ==================================================
;~ Останавливает службу, в случае успеха возвращает: 0
Func KillService($PrPID)
;~ Формируем текст запроса:
$QueryText = "SELECT * FROM Win32_Service WHERE ProcessId = '" & $PrPid & "'"
;~ Создаём объект-коллекцию:
$CollectionServices = $WMI.ExecQuery($QueryText)
If $CollectionServices.Count > 0 Then ; Если элементов коллекции > 0 Тогда
;~ Цикл по элемент(у)ам коллекции:
For $objItem In $CollectionServices
Return $objItem.StopService()
Next
EndIf
EndFunc-
storm2005
Re: [Архив - Часть 1.3] AutoIt скрипты
Интересует взлом скомпилированного AutoIt .exe. Можно или нет это сделать, если при компиляции был выставлен пароль или убрана галка позволяющая декомпилировать?
-
Diamond
Re: [Архив - Часть 1.3] AutoIt скрипты
Creat0R
VelDmi
Мне трудно представить что кто-то, с затёкшим от напряжения пальцем, упорно удерживает панель заголовка, во время работы приложения.
Цитата:
Т.е получается, что это ответственность программиста предусматривать подобные вещи, а не системы...
Полностью согласен, но при этом возникает интересный парадокс.
Мы требуем от разработчиков исправления бага, но в тоже время забываем что сами являемся в определённой степени разработчиками приложений на AutoIT.
А что нам в свою очередь, мешает исправить этот баг в собственных AutoIT сценариях. Тем более, как уже было сказано amel27 такая возможность есть:
Цитата:
Думаю проблема в AdLib, так как это чисто AutoIT-овский планировщик и он отключается на время передачи управления системному коду (через DLLCall), поэтому ИМХО нужно либо избегать таких вызовов, либо использовать модель GUIRegisterMsg, которая поддерживается самой системой... правда в этом случае прорисовку придется выполнять в основном цикле, а обработку нажатий наоборот в процедуре.
Что... для нас это сложно и не удобно? А уж что говорить о разработчиках AutoIT. Учитывая тот факт что AutoIT бесплатен, сомневаюсь что они захотят что-то глобально поменять.
Получается разработчики AutoIT, свернули вину на разработчиков Windows, а мы в свою очередь свернули вину на разработчиков AutoIT. Но никто из всех трёх (включая и нас), не хочет изменять что-либо в коде.
VelDmi
Мне трудно представить что кто-то, с затёкшим от напряжения пальцем, упорно удерживает панель заголовка, во время работы приложения.

Цитата:
Т.е получается, что это ответственность программиста предусматривать подобные вещи, а не системы...
Полностью согласен, но при этом возникает интересный парадокс.

Мы требуем от разработчиков исправления бага, но в тоже время забываем что сами являемся в определённой степени разработчиками приложений на AutoIT.
А что нам в свою очередь, мешает исправить этот баг в собственных AutoIT сценариях. Тем более, как уже было сказано amel27 такая возможность есть:
Цитата:
Думаю проблема в AdLib, так как это чисто AutoIT-овский планировщик и он отключается на время передачи управления системному коду (через DLLCall), поэтому ИМХО нужно либо избегать таких вызовов, либо использовать модель GUIRegisterMsg, которая поддерживается самой системой... правда в этом случае прорисовку придется выполнять в основном цикле, а обработку нажатий наоборот в процедуре.
Что... для нас это сложно и не удобно? А уж что говорить о разработчиках AutoIT. Учитывая тот факт что AutoIT бесплатен, сомневаюсь что они захотят что-то глобально поменять.
Получается разработчики AutoIT, свернули вину на разработчиков Windows, а мы в свою очередь свернули вину на разработчиков AutoIT. Но никто из всех трёх (включая и нас), не хочет изменять что-либо в коде.

-
amel27
Re: [Архив - Часть 1.3] AutoIt скрипты
Creat0R
Цитата:
что-то так и не понял, как распознавать и соответственно добавлять неопознанные стили
ты разве не понял принцип работы скрипта?.. Если в тексте после всех замен остались XML-теги, то считается что есть неопознанные стили... соответственно, сам себя он не сможет обработать, так как не сможет отличить XML-тег от строки сравнения.
Цитата:
что-то так и не понял, как распознавать и соответственно добавлять неопознанные стили
ты разве не понял принцип работы скрипта?.. Если в тексте после всех замен остались XML-теги, то считается что есть неопознанные стили... соответственно, сам себя он не сможет обработать, так как не сможет отличить XML-тег от строки сравнения.
-
Diamond
Re: [Архив - Часть 1.3] AutoIt скрипты
Creat0R
Рад, что пригодилось. Собирал информацию как говориться с мира по нитке.
Вот только мне не нравиться что эти функции цвета переворачивают с RGB на GBR, надо будет потом поправить...
Рад, что пригодилось. Собирал информацию как говориться с мира по нитке.

Вот только мне не нравиться что эти функции цвета переворачивают с RGB на GBR, надо будет потом поправить...
-
DenchikK
Re: [Архив - Часть 1.3] AutoIt скрипты
Creat0R
Суть работы скрипта такова:
Заливка файлов по списку ссылок в аккаунты, доступ к которым задается логином и паролем.
То есть со стороны юзеа это выглядит так: он подготоавливает список ссылок на файлы, которые хочет скачать, и список пустых аккаунтов, в которые эти ссылки будут помещены. 1 линк = 1 аккаунт. При запуске скрипта юзер выбирает, в какой именно аккаунт будет заливаться любой по списку файл по линку (radibutton подходит лучше, но я что то до сих пор с опреатором case из примера не разобрался):
И вот когда выбран нужный аккаунт, поле самой программы заполняется:
В поле линк - идет ссылка, тут наверное даже не принципиально её положение в файле, пускай будет самая первая в списке (ещё б сделать в этом случае её удаление из списка, после заполнения поля)
В поле Логин - тот Логин, что выбран, в поле Пароль - соответствующий ему пароль . Например 6 логин сверху соответствует 6 сверху паролю (то же былоб интереснее, чтоб после заполнения они бы стирались).
Вообщем как то так...
Спасибо Вам что Вы со мною возитесь!
Суть работы скрипта такова:
Заливка файлов по списку ссылок в аккаунты, доступ к которым задается логином и паролем.
То есть со стороны юзеа это выглядит так: он подготоавливает список ссылок на файлы, которые хочет скачать, и список пустых аккаунтов, в которые эти ссылки будут помещены. 1 линк = 1 аккаунт. При запуске скрипта юзер выбирает, в какой именно аккаунт будет заливаться любой по списку файл по линку (radibutton подходит лучше, но я что то до сих пор с опреатором case из примера не разобрался):
http://img154.imageshack.us/img154/3923/1autowa8.jpg
И вот когда выбран нужный аккаунт, поле самой программы заполняется:
http://img154.imageshack.us/img154/8333/2autoyc1.jpg
В поле линк - идет ссылка, тут наверное даже не принципиально её положение в файле, пускай будет самая первая в списке (ещё б сделать в этом случае её удаление из списка, после заполнения поля)
В поле Логин - тот Логин, что выбран, в поле Пароль - соответствующий ему пароль . Например 6 логин сверху соответствует 6 сверху паролю (то же былоб интереснее, чтоб после заполнения они бы стирались).
Вообщем как то так...
Спасибо Вам что Вы со мною возитесь!