[Архив - Часть 1.3] AutoIt скрипты

Ответить
 • Просмотры: 2
Аватара пользователя
Yozhegg

Re: [Архив - Часть 1.3] AutoIt скрипты

Сообщение Yozhegg »

VelDmi


Цитата:



Yozhegg

Цитата:

А нет ли для AutoIt какой-нибудь рисовалки форм?

А то очень долго координаты с "дизайн-макета" списывать..







Здрасте, а как же koda designer?



А что это такое ( koda designer? )? к AutoIt отношение имеет?
Аватара пользователя
mrak1990

Re: [Архив - Часть 1.3] AutoIt скрипты

Сообщение mrak1990 »

Creat0R

Разобрался наконец с твоим скриптом. Но остался один маленький вопросик:



Код:

Код: Выделить всё

Local $WinListArr[$WinList[0][0]+2]

В скриптах AutoIT нужно при объявлении массива указывать в квадратных скобках число элементов? Если так, то почему ты приписываешь "+2", а не "+1"?
Аватара пользователя
Diamond

Re: [Архив - Часть 1.3] AutoIt скрипты

Сообщение Diamond »

Creat0R


Цитата:



При первом запуске выдаёт два совпадения и что скрипт уже запущен, хотя это не так.



У меня всё нормально, хотя если запускать его из редактора то обнаруживается лишнее "совпадение".


Цитата:



Кстати, а можно ли как то получить список скрытых процессов?



Думаю, что процесс будет скрыт только от "Диспетчера задач Windows" и подобных ему, т.е. от WMI он не скроется.



amel27


Цитата:



к сожалению он полезен только в учебных целях...



Действительно к сожалению...

Наверное что-то вроде этого я и искал, но не ожидал что это будет работать именно так...

В любом случае, Спасибо!


Цитата:



все остальные способы будут оффтопом для этой ветки.



Любой способ который можно использовать в AutoIT, или который имеет прямое отношение к скрипту AutoIT, разве это оффтоп? Хотя...



Скажем, я хочу знать какие программы запускали на моём компьютере в моё отсутствие.

Проблема в том, что более опытный юзер может легко обнаружить и завершить мой "шпионский" процесс.

У меня возникла идея не скрывать, а просто сделать невозможным его завершение, т.е. скомпилировать скрипт и назвать его к примеру lsass.exe.

Хотя и примитивно - зато надёжно. Изображение
Аватара пользователя
mrak1990

Re: [Архив - Часть 1.3] AutoIt скрипты

Сообщение mrak1990 »

Yozhegg
Цитата:



А что это такое ( 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 скрипты

Сообщение Diamond »

Завершение процессов и служб

Некоторые процессы невозможно завершить с помощью 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 скрипты

Сообщение storm2005 »

Интересует взлом скомпилированного AutoIt .exe. Можно или нет это сделать, если при компиляции был выставлен пароль или убрана галка позволяющая декомпилировать?
Аватара пользователя
Diamond

Re: [Архив - Часть 1.3] AutoIt скрипты

Сообщение Diamond »

Creat0R

VelDmi

Мне трудно представить что кто-то, с затёкшим от напряжения пальцем, упорно удерживает панель заголовка, во время работы приложения. Изображение


Цитата:



Т.е получается, что это ответственность программиста предусматривать подобные вещи, а не системы...



Полностью согласен, но при этом возникает интересный парадокс. Изображение

Мы требуем от разработчиков исправления бага, но в тоже время забываем что сами являемся в определённой степени разработчиками приложений на AutoIT.

А что нам в свою очередь, мешает исправить этот баг в собственных AutoIT сценариях. Тем более, как уже было сказано amel27 такая возможность есть:


Цитата:



Думаю проблема в AdLib, так как это чисто AutoIT-овский планировщик и он отключается на время передачи управления системному коду (через DLLCall), поэтому ИМХО нужно либо избегать таких вызовов, либо использовать модель GUIRegisterMsg, которая поддерживается самой системой... правда в этом случае прорисовку придется выполнять в основном цикле, а обработку нажатий наоборот в процедуре.



Что... для нас это сложно и не удобно? А уж что говорить о разработчиках AutoIT. Учитывая тот факт что AutoIT бесплатен, сомневаюсь что они захотят что-то глобально поменять.

Получается разработчики AutoIT, свернули вину на разработчиков Windows, а мы в свою очередь свернули вину на разработчиков AutoIT. Но никто из всех трёх (включая и нас), не хочет изменять что-либо в коде. Изображение
Аватара пользователя
amel27

Re: [Архив - Часть 1.3] AutoIt скрипты

Сообщение amel27 »

Creat0R
Цитата:



что-то так и не понял, как распознавать и соответственно добавлять неопознанные стили



ты разве не понял принцип работы скрипта?.. Если в тексте после всех замен остались XML-теги, то считается что есть неопознанные стили... соответственно, сам себя он не сможет обработать, так как не сможет отличить XML-тег от строки сравнения.
Аватара пользователя
Diamond

Re: [Архив - Часть 1.3] AutoIt скрипты

Сообщение Diamond »

Creat0R

Рад, что пригодилось. Собирал информацию как говориться с мира по нитке. Изображение

Вот только мне не нравиться что эти функции цвета переворачивают с RGB на GBR, надо будет потом поправить...
Аватара пользователя
DenchikK

Re: [Архив - Часть 1.3] AutoIt скрипты

Сообщение DenchikK »

Creat0R

Суть работы скрипта такова:

Заливка файлов по списку ссылок в аккаунты, доступ к которым задается логином и паролем.

То есть со стороны юзеа это выглядит так: он подготоавливает список ссылок на файлы, которые хочет скачать, и список пустых аккаунтов, в которые эти ссылки будут помещены. 1 линк = 1 аккаунт. При запуске скрипта юзер выбирает, в какой именно аккаунт будет заливаться любой по списку файл по линку (radibutton подходит лучше, но я что то до сих пор с опреатором case из примера не разобрался):

http://img154.imageshack.us/img154/3923/1autowa8.jpg




И вот когда выбран нужный аккаунт, поле самой программы заполняется:

http://img154.imageshack.us/img154/8333/2autoyc1.jpg




В поле линк - идет ссылка, тут наверное даже не принципиально её положение в файле, пускай будет самая первая в списке (ещё б сделать в этом случае её удаление из списка, после заполнения поля)

В поле Логин - тот Логин, что выбран, в поле Пароль - соответствующий ему пароль . Например 6 логин сверху соответствует 6 сверху паролю (то же былоб интереснее, чтоб после заполнения они бы стирались).



Вообщем как то так...



Спасибо Вам что Вы со мною возитесь! :-)
Ответить

Вернуться в «AutoIt»