Показать полную графическую версию : [архив - Часть 2] AutoIt скрипты
MaxxQ,
полезные проги
Да, но только уточню (т.к располагаются у меня на сайте), утилиты вовсе не мои ;) - Там кстати недавно я создал раздел посвящённый утилитам с открытым кодом (http://creator-lab.ucoz.ru/load/4) на AutoIt, а также раздел для разных функции и библиотек (http://creator-lab.ucoz.ru/load/3) (пока в процессе строения).
Никто не в курсе как можно даную функцию (_IsPressed) заставить вести лог??, тоесть сохранять все нажатия клавиш в текстовом файле....
Maza Faka
09-11-2007, 14:16
Angelus
Примерно так:
#include <Misc.au3>
HotKeySet("{Esc}", "Quit")
Global $KeyArray[6]
$KeyArray[0] = 5
$KeyArray[1] = 01
$KeyArray[2] = 02
$KeyArray[3] = 04
$KeyArray[4] = 08
$KeyArray[5] = 09
$log = FileOpen("c:\log.txt", 2)
$dll = DllOpen("user32.dll")
AdlibEnable("KeyPress", 100)
While 1
Sleep(100)
WEnd
FileClose($open)
DllClose($dll)
Func Quit()
Exit
EndFunc
Func KeyPress()
For $i = 1 To $KeyArray[0]
If _IsPressed($KeyArray[$i], $dll) Then FileWriteLine($log, $KeyArray[$i])
Next
EndFunc
Вышеуказанный скрипт отслеживает нажатия: левой и правой кнопок мыши, клавиши Tab и BackSpace
Но написать полноценный кейлогер при помощи AutoIT-а не получится, всё таки это скриптовый язык.
Maza Faka, Angelus,
написать полноценный кейлогер при помощи AutoIT-а не получится »
Получится, Larry (на моё удивление) написал (http://www.autoitscript.com/forum/index.php?s=&showtopic=55694&view=findpost&p=422499) подобную штучку ;) (вот более понятный пример (http://www.autoitscript.com/forum/index.php?s=&showtopic=55694&view=findpost&p=422967)).
Maza Faka, у меня еще один вопрос возник в процессе использования скрипта :) , как добавить в него суммы исключения, к примеру что бы по появлении суммы равной 6666666666, 777777777, 8888888888 нечего не происходило бы??????
Спасибо
MaxxQ,
что бы по появлении суммы равной 6666666666, 777777777, 8888888888 нечего не происходило
Простая логичная проверка:
If $checksum = 6666666666 Or $checksum = 777777777 Or $checksum = 8888888888 Then
;Тут ничего не происходит ;)
Else
;Тут происходит то что нам нужно
EndIf
;)
P.S
При необходимости можно все исключения поместить в массив (также как и с массивом пикселей), и проверять поиском по массиву (текущего $checksum).
все, вроде закончил скрипт, спасибо всем за помощь
Kenwood3D
10-11-2007, 16:57
Доброго времени суток.
Подскажите пожалуйста.
Необходимо программно отркрыть окно свойства одного из сетевого подключения (через AutoIt). К примеру, чтобы открыть "Сетевые подключения" необходимо выполнить ::{7007acc7-3202-11d1-aad2-00805fc1270e}, а что надо выполнить чтобы открыть свойства или состояние конкретного подключения?
Есть способ через rasphone.exe -f "C:\Documents and Settings\All Users\Application Data\Microsoft\Network\Connections\Pbk\rasphone.pbk" -e "Inet", но так открывает только VPN-соединение "Inet", а подключение по локальной сети не хочет.
Dementei
12-11-2007, 11:55
Здравствуйте.
Только вчера открыл для себя AutoIT.
Написал следующее:
;Открывает окно из которого копируем через ctrl-c и закрывает окно ctrl-a
Send("901")
Send("^c")
Send("^a")
$old_name = ClipGet()
$new_name = InputBox("Переименовать", "Введите новое название файла", $old_name)
;Открывает окно куда вводится новое имя файла
Send("901")
Send($new_name)
Все работает только тогда, когда раскладка клавиатуры по умолчанию английская и язык для печати английский. В других случаях таких как en-ru, ru-en, ru-ru работает не так как надо либо вообще не работает. Подскажите, что надо сделать, чтоб этот скрипт работал при любых раскладках. Так же при русской раскладке по умолчанию не срабатывают ctrl-c ... Спасибо.
Kenwood3D
Необходимо программно отркрыть окно свойства одного из сетевого подключения »HotKeySet("{Esc}", "OnExit")
_OpenConnProperties('Подключение по локальной сети')
While 1
Sleep(1000)
Wend
Func _OpenConnProperties($sConnName)
Local $oShellApp = ObjCreate('shell.application')
Local $oCP = $oShellApp.Namespace (3), $item
For $item In $oCP.items
If $item.name = 'Сетевые подключения' Then
For $item In $item.getfolder.items
If $item.name = $sConnName Then $item.InvokeVerb('Сво&йства')
Next
EndIf
Next
EndFunc
Func OnExit()
Exit
EndFunc
Dementei
12-11-2007, 13:20
Сочетания клавиш заработали при любой раскладке если писать так:
If @KBLayout = 0419 Then
Send("^ф")
Else
Send("^a")
EndIf
А вот с текстом проблемы, функция ControlGetText в этом приложении не работает и приходится его через буфер обмена передавать, но вот в таком варианте получается, что при:
en-ru, вместо допустим "tim" пишет "ешь"...
Как это побороть?
Maza Faka
12-11-2007, 14:13
Dementei,
вместо допустим "tim" пишет "ешь"...
У меня нормально указывает и получает текст при любой раскладке:
$string = "tim"
$title = "Безымянный"
WinWait($title)
ControlSetText($title, "", "Edit1", $string)
Dementei
12-11-2007, 14:54
Напишу еще раз:
(code)
Send("901")
;Вызывает окно, из которого с помощью ctrl-c копируется название файла, а ctrl-a закрывает это окно.
;Для программы, которой этот скрип управляет 901 - вызывает окно и делает выделенной строчку, в которой
;название файла. Сочетание клавиш ctrl-a закрывает это окно.
If @KBLayout = 0419 Then
Send("^с")
Else
Send("^c")
EndIf
If @KBLayout = 0419 Then
Send("^ф")
Else
Send("^a")
EndIf
$old_name = ClipGet()
;$old_name получает значение имени файла
$new_name = InputBox("Переименовать", "Введите новое название файла", $old_name)
;$new_name создает окно, в котором отображается страрое название файла и надо ввести новое
Send("901")
;Открываем снова окно для ввода имени файла и передаем ему новое имя, кот. ввели в диалоговое окно
Send($new_name)
;Посылаем новое имя в окно, кот. открылось по сочетанию клавиш 901
(/code)
Так вот при таком способе Send($new_name) пошлет Tim при английской раскладке и Ешь при русской.
Как добиться аналогичной функциональности, но чтоб это работало при любой раскладке?
Maza Faka
12-11-2007, 16:25
Dementei,
Посмотри здесь http://oszone.net/display.php?id=3663 про переключение раскладки.
Dementei
12-11-2007, 16:39
Maza Faka,
Смотрел, это не помогает в данном случаи.
Но я нашел выход:
ClipPut($new_name)
Вот уже с этим ничего не происходит, оно уже вводится как надо при любой раскладке... но это ограничивает возможности...
amel27,
А можно таким же методом (ну или другим), отображать свойства для любого файла? т.е мне нужен вот этот диалог для указанного в функции файла:
http://img220.imageshack.us/img220/8056/propertiesdialogti0.th.png (http://img220.imageshack.us/my.php?image=propertiesdialogti0.png)
P.S
ShellExecute($File, "", "", "properties") не работает :(
Dementei
это ограничивает возможности
Чем ограничивает?
Creat0R, А можно таким же методом (ну или другим), отображать свойства для любого файла? »можно, только извини, некогда доводить до ума - без контроля ошибок и разделения пути:Func _OpenFileProperties($sDir, $sFile)
Local $oShellApp = ObjCreate('shell.application')
Local $oDir = $oShellApp.Namespace ($sDir), $oName
For $oName In $oDir.items
If $oName.name = $sFile Then $oName.InvokeVerb('Сво&йства')
Next
EndFunc
amel27,
без контроля ошибок и разделения пути
Но оно работает у тебя? у меня нет :( - если задать пустое значение для verb, то открывает файл в программе по умолчанию.
Вот версия с разделением путей, но у меня по прежнему не работает:
_OpenFileProperties("C:\Test.txt", "Сво&йства")
Func _OpenFileProperties($sFilePath, $Verb='Open')
Local $sFileName = StringRegExpReplace($sFilePath, '.*\\|\.[^.]*$', '')
Local $sPath = StringRegExpReplace($sFilePath, '\\[^\\]*$', '')
Local $oShellApp = ObjCreate('shell.application')
Local $oDir = $oShellApp.Namespace($sPath), $oName
For $oName In $oDir.Items
If $oName.Name = $sFileName Then
;$objVerbs = $oDir.Self.Verbs
;$Verb = $objVerbs.Item(0).Name
$oName.InvokeVerb($Verb)
EndIf
Next
EndFunc
amel27,
Оно работает! :) но только пока скрипт активен :( - Т.е как только скрипт завершает работу, окно свойств исчезает, не очень удобно...
Kenwood3D
14-11-2007, 01:12
HotKeySet("{Esc}", "OnExit")
_OpenConnProperties('Подключение по локальной сети')
While 1
Sleep(1000)
Wend
Func _OpenConnProperties($sConnName)
Local $oShellApp = ObjCreate('shell.application')
Local $oCP = $oShellApp.Namespace (3), $item
For $item In $oCP.items
If $item.name = 'Сетевые подключения' Then
For $item In $item.getfolder.items
If $item.name = $sConnName Then $item.InvokeVerb('Сво&йства')
Next
EndIf
Next
EndFunc
Func OnExit()
Exit
EndFunc »
Не хочет работать! После запуска вылетает системное окно "Приложение или библиотека C:\WINDOWS\system32\irprops.cpl не является образом программы для Windows NT. Проверьте назначение установочного диска. " И выполнение зависает на строке "Sleep(1000)"
Система WindowsXP
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.