|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты |
|
[архив - Часть 2] AutoIt скрипты
|
(*.*) Сообщения: 36567 |
Внимание! Тема переведена в архивное состояние Текущая тема http://forum.oszone.net/thread-98914.html (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. ![]() Сайт программы Русская справка Коллекция AutoIt скриптов от Sanja Alone Коллекция AutoIt скриптов от MSFN (могут быть устаревшие). Справочник по командам rundll32 (команды запуска диалоговых окон и не только...) AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо). Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров. Цитата Vadikan:
|
||
------- Отправлено: 00:02, 05-02-2006 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Спасибо Maza Faka , но у меня опять грабли, и в связи с этим несколько вопросов, при выполнении твоего сценария когда $checksum <> 1111111111 происходит нажатие клавиши Z, но вот после когда область изменяется опять на $checksum <> 1111111111 не происходит нажатие клавиши Z, я имею ввиду что мне нужно что бы при каждом изменении области которая будет $checksum <> 1111111111 происходило нажатие Z(один раз) , а если значение становилось $checksum = 1111111111 тогда уже X(один раз), если опять $checksum = 1111111111 опять X и т.д
И еще вопрос можно ли добавить не одно значение - 1111111111, а еще 2222222222, 3333333333 и т.д, при появление которых будет выполнятся X. Подскажите как такая функция будет выглядеть ??? Спасибо P.s пытаюсь читать справку нехрена пока не понимаю ![]() |
Отправлено: 08:17, 06-11-2007 | #691 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Рисуем смайлик
![]() $MsPaintPid = Run("mspaint") ProcessWait($MsPaintPid) WinActivate("[CLASS:MSPaintApp]") WinWaitActive("[CLASS:MSPaintApp]") BlockInput(1) _MouseMoveCircle(220, 180, 100, 625, 1) ;Лицо Sleep(200) _MouseMoveCircle(180, 155, 100, 100, 1) ;Улыбка (кривая :D) Sleep(400) _MouseMoveCircle(175, 140, 20, 625, 1) ;Левый глаз Sleep(20) _MouseMoveCircle(260, 140, 20, 625, 1) ;Правый глаз Sleep(400) _MouseMoveCircle(182, 145, 10, 625, 1) ;Зрачёк левого глаза Sleep(20) _MouseMoveCircle(268, 145, 10, 625, 1) ;Зрачёк правого глаза BlockInput(0) Func _MouseMoveCircle($xPos, $yPos, $Radius, $TimeExp, $MouseClick=0); x coord, y coord, radius, time to loop (milliseconds) Local $TimeInit = TimerInit() Local $xPosMov, $yPosMov Local $MouseClick_Mark = 1 Do $TimeDiff = TimerDiff($TimeInit) $xPosMov = $xPos + ($Radius * Sin($TimeDiff/100)) $yPosMov = $yPos + ($Radius * Cos($TimeDiff/100)) MouseMove($xPosMov, $yPosMov, 1) If $MouseClick_Mark = 1 And $MouseClick <> 0 Then MouseDown("Left") $MouseClick_Mark = 0 Until $TimeDiff > $TimeExp If $MouseClick <> 0 Then MouseUp("Left") EndFunc P.S Функция немного подправлена и в предыдущем моём примере, там переменная для отметки не сбрасывалась. |
------- Отправлено: 09:14, 06-11-2007 | #692 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать MaxxQ
Может во время работы скрипта ты нажимаешь клавишу Esc и скрипт завершает работу? Попробуй заменить клавишу Esc на какое нибудь сочетание клавиш, например: К сожалению я не могу проверить работу скрипта с контрольной суммой пикселов, но можно немного изменить скрипт (принцип работы остаётся таким же) : HotKeySet("^!a", "ExitFunc") $title = "Безымянный - Блокнот" SendX() Func SendX() While 1 If WinExists($title) Then ConsoleWrite("X") ExitLoop EndIf Sleep(100) WEnd SendZ() EndFunc Func SendZ() While 1 If Not WinExists($title) Then ConsoleWrite("Z") ExitLoop EndIf Sleep(100) WEnd SendX() EndFunc Func ExitFunc() Exit EndFunc Скрипт работает, значит должен работать и с вычислением контрольной суммы пикселов. Цитата:
|
|
Последний раз редактировалось Maza Faka, 06-11-2007 в 12:10. Отправлено: 12:00, 06-11-2007 | #693 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать #include <GUIConstants.au3> #include <Date.au3> Dim $hour, $min, $sec GUICreate("Test", 150, 70, -1, -1, $WS_CLIPSIBLINGS) $label = GUICtrlCreateLabel("00:00:00", 50, 15, 100, 20) $begin = TimerInit() GUISetState() AdlibEnable("SetTime", 500) While GUIGetMsg() <> -3 Sleep(10) WEnd Func SetTime() $time = _TicksToTime(Int(TimerDiff($begin)), $hour, $min, $sec) GUICtrlSetData($label, StringFormat("%02i:%02i:%02i", $hour, $min, $sec)) EndFunc #include <GUIConstants.au3> #include <Date.au3> #include <DllCallBack.au3> Global $sTimer, $Dll_Timer, $hour, $min, $sec GUICreate("Test", 150, 70, -1, -1) $label = GUICtrlCreateLabel("00:00:00", 50, 15, 100, 20) $begin = TimerInit() GUISetState() Timer() While 1 Switch GUIGetMsg() Case -3 _DllCallBack_Free($sTimer) DllCall("user32.dll", "int", "KillTimer", "hwnd", 0, "uint", $Dll_Timer) ExitLoop EndSwitch WEnd Func Timer() $sTimer = _DllCallBack("SetTime", "hwnd;uint;int;ptr") $Dll_Timer = DllCall("user32.dll", "uint", "SetTimer", "hwnd", 0, "uint", 0, "int", 500, "ptr", $sTimer) $Dll_Timer = $Dll_Timer[0] EndFunc Func SetTime($hWnd, $uiMsg, $idEvent, $dwTime) $time = _TicksToTime(Int(TimerDiff($begin)), $hour, $min, $sec) GUICtrlSetData($label, StringFormat("%02i:%02i:%02i", $hour, $min, $sec)) EndFunc |
Отправлено: 13:48, 06-11-2007 | #694 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Спасибо Maza Faka что помогаешь разобраться (единственный кто помог)
ESC я не нажимал, сценарий не завершал работу а, а ждал пока область будет изменена с $checksum<> 1111111111 на $checksum = 1111111111, а если область опять изменялась с $checksum<> 1111111111 на $checksum<> 1111111111 нечего не происходит. Вот по этому скрипту c блокнотом, получается что функция не может быть дважды подряд Z (как я понял) т.е дважды подряд блокнот не может быть закрыт ![]() А у меня не известно когда придет нужная сумма пикселей при которой $checksum= 1111111111 (2222222222, 3333333333 и т.д.) и выполнится Send("{x}")(один раз) , если же сумма будет любой другой Send("{z}")(один раз) каждый раз при обновлении области. Вообще скрипт нужен для игры в покер на префлопе(не знаю может я велосипед изобретаю?), но функции должны быть такие: при приходе на руки нужных карт AA, KK, QQ и т.д. сумму пикселей которых я знаю (и сам задаю в скрипте, 1111111111, 222222222, 3333333333 и т.д., вообще их будет около 132) происходит нажатие X , а при появлении 29, 48,73 и т.д. где естественно $checksum <> 1111111111, нажатие Z. Все бы хорошо, но в данном скрипте не реализована функция где при каждом обновлении области на $checksum <> 1111111111 происходило бы Send("{z}") (один раз) дважды подряд, трижды и так до бесконечности , ведь неизвестно когда придут карты где $checksum= 1111111111. Возможно ли это вообще реализовать? и как?? ПОМОГИТЕ ![]() ![]() ![]() |
Отправлено: 16:29, 06-11-2007 | #695 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 16:58, 06-11-2007 | #696 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать MaxxQ
Пробуй: #include <Array.au3> HotKeySet("{Esc}", "OnExit") Global $CardArray[133] Dim $new_checksum = PixelChecksum(0,0, 50,50) $CardArray[0] = 132 $CardArray[1] = 1111111111 $CardArray[2] = 2222222222 $CardArray[3] = 3333333333 ; И так далее, либо выложи формулу по которой происходит увеличение суммы, тогда можно будет сделать в цикле ;-) While 1 $checksum = PixelChecksum(0, 0, 50, 50) If $checksum <> $new_checksum Then _ArraySearch($CardArray, $checksum, 1) If @error Then Send("{z}") Else Send("{x}") EndIf $new_checksum = PixelChecksum(0,0, 50,50) EndIf Sleep(100) WEnd Func OnExit() Exit EndFunc |
Отправлено: 08:32, 07-11-2007 | #697 |
Ветеран Сообщения: 532
|
Профиль | Отправить PM | Цитировать http://creator-lab.ucoz.ru/AutoIt/Au...oGenerator.zip (34 Kb) - Записывает в реальном времени действия пользователя в AutoIt код.
http://creator-lab.ucoz.ru/AutoIt/ScriptWriter.zip (78 Kb) - Аналог AutoItMacroGenerator. http://creator-lab.ucoz.ru/AutoIt/API_Help_Rus.zip Русский справочник по API-функциям http://creator-lab.ucoz.ru/AutoIt/Koda.zip (724 Kb) - Визуализация работы с GUI - аналог Visual Basic. |
Отправлено: 20:11, 07-11-2007 | #698 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать ЗАРАБОТАЛА, СПАСИБО Maza Faka
|
Отправлено: 20:30, 07-11-2007 | #699 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Цитата infinity78:
|
|
Отправлено: 22:06, 08-11-2007 | #700 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 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 |
|