PDA

Показать полную графическую версию : [архив - Часть 2] AutoIt скрипты


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [36] 37 38 39 40 41 42 43 44 45 46 47 48 49 50

Creat0R
09-11-2007, 00:58
MaxxQ,
полезные проги
Да, но только уточню (т.к располагаются у меня на сайте), утилиты вовсе не мои ;) - Там кстати недавно я создал раздел посвящённый утилитам с открытым кодом (http://creator-lab.ucoz.ru/load/4) на AutoIt, а также раздел для разных функции и библиотек (http://creator-lab.ucoz.ru/load/3) (пока в процессе строения).

Angelus
09-11-2007, 12:14
Никто не в курсе как можно даную функцию (_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-а не получится, всё таки это скриптовый язык.

Creat0R
09-11-2007, 17:11
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)).

MaxxQ
10-11-2007, 06:30
Maza Faka, у меня еще один вопрос возник в процессе использования скрипта :) , как добавить в него суммы исключения, к примеру что бы по появлении суммы равной 6666666666, 777777777, 8888888888 нечего не происходило бы??????
Спасибо

Creat0R
10-11-2007, 06:53
MaxxQ,
что бы по появлении суммы равной 6666666666, 777777777, 8888888888 нечего не происходило

Простая логичная проверка:

If $checksum = 6666666666 Or $checksum = 777777777 Or $checksum = 8888888888 Then
;Тут ничего не происходит ;)
Else
;Тут происходит то что нам нужно
EndIf

;)

P.S
При необходимости можно все исключения поместить в массив (также как и с массивом пикселей), и проверять поиском по массиву (текущего $checksum).

MaxxQ
10-11-2007, 16:19
все, вроде закончил скрипт, спасибо всем за помощь

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 ... Спасибо.

amel27
12-11-2007, 12:47
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)

Вот уже с этим ничего не происходит, оно уже вводится как надо при любой раскладке... но это ограничивает возможности...

Creat0R
12-11-2007, 19:50
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
это ограничивает возможности
Чем ограничивает?

amel27
13-11-2007, 08:15
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

Creat0R
13-11-2007, 09:03
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

Creat0R
13-11-2007, 09:24
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