|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. |
|
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
|
(*.*) Сообщения: 36560 |
Внимание! В связи с созданием отдельного форума по AutoIt, эта тема переводится в архивное состояние. Если у вас есть вопрос, создайте новую тему или поднимите существующую, если в ней обсуждается аналогичная проблема. Пожалуйста, не создавайте тем с названием "Помогите!" или "Нужна помощь по AutoIt". Это и так понятно ![]() ![]() Сайт программы Русская справка Коллекция AutoIt скриптов от Sanja Alone Коллекция AutoIt скриптов от MSFN (могут быть устаревшие). Справочник по командам rundll32 (команды запуска диалоговых окон и не только...) AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо). Архивы старых тем по AutoIt или они же в 7z архиве (версии для печати) - 846 кб (настоятельно рекомендуется к прочтению/поиску) (он же прикреплен в шапке) Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров. Цитата Vadikan:
|
||
------- Отправлено: 00:02, 05-02-2006 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27,
Цитата:
![]() Цитата:
![]() Вот пример с функцией, возвращает идентификатор окна (Handle) основываясь на идентификаторе процесса (PID), тексте, и классе окна: $iPID = Run("Notepad.exe") ProcessWait($iPID) Sleep(500) Send("^s") Sleep(1000) $Handle = _WinGetHandleEx($iPID, "#32770", "", "FolderView") MsgBox(64, "Title:", WinGetTitle($Handle)) Func _WinGetHandleEx($iPID, $sClassNN="", $sPartTitle="", $sText="", $iVisibleOnly=1) If IsString($iPID) Then $iPID = ProcessExists($iPID) Local $aWList = WinList("[CLASS:" & $sClassNN & ";REGEXPTITLE:(?i).*" & $sPartTitle & ".*]", $sText) If @error Then Return SetError(1, 0, "") For $i = 1 To $aWList[0][0] If WinGetProcess($aWList[$i][1]) = $iPID And (Not $iVisibleOnly Or _ ($iVisibleOnly And BitAND(WinGetState($aWList[$i][1]), 2))) Then Return $aWList[$i][1] Next Return SetError(2, 0, "") EndFunc P.S А по поводу моей проблемы с мышкой, есть идеи что можно придумать? ![]() |
||
------- Отправлено: 07:40, 12-02-2008 | #121 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
![]() Global Const $WH_MOUSE_LL = 14 Global $hKeyProc = DllCallbackRegister ("_KeyProc", "int", "int;ptr;ptr") Global $hmod = DllCall("kernel32.dll","hwnd","GetModuleHandle","ptr",0) MsgBox(4096, "", 'После нажатия "Ok" левая кнопка мыши будет заблокирована на 10 сек.') Global $hHook = DllCall("user32.dll","hwnd","SetWindowsHookEx","int", $WH_MOUSE_LL, _ "ptr", DllCallbackGetPtr($hKeyProc), "hwnd", $hmod[0], "dword", 0) Sleep(10000) MsgBox(4096, "", 'Для разблокирования мышки нажмите "Ок"! ;)') Exit Func _KeyProc($nCode, $wParam, $lParam) If $nCode < 0 Or ($wParam<>0x201 And $wParam<>0x202) Then $ret = DllCall("user32.dll","long","CallNextHookEx","hwnd", $hHook[0], _ "int", $nCode, "ptr", $wParam, "ptr", $lParam) Return $ret[0] EndIf Return 1 EndFunc Func OnAutoItExit() DllCall("user32.dll","int","UnhookWindowsHookEx","hwnd",$hHook[0]) DllCallbackFree($hKeyProc) EndFunc Цитата Creat0R:
![]() Цитата Creat0R:
![]() |
|||
Отправлено: 07:53, 12-02-2008 | #122 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27,
Цитата:
![]() Вот пример, подобный обработке сообщении для элементов GUI (ListView в частности): Global Const $WH_MOUSE_LL = 14 Global $hKeyProc = DllCallbackRegister ("_Mouse_Handler", "int", "int;ptr;ptr") Global $hmod = DllCall("kernel32.dll", "hwnd", "GetModuleHandle", "ptr", 0) MsgBox(4096, "", 'После нажатия "Ok" левая кнопка мыши будет заблокирована на 10 сек.') Global $hHook = DllCall("user32.dll", "hwnd", "SetWindowsHookEx", "int", $WH_MOUSE_LL, _ "ptr", DllCallbackGetPtr($hKeyProc), "hwnd", $hmod[0], "dword", 0) Sleep(10000) DllCall("user32.dll", "int", "UnhookWindowsHookEx", "hwnd", $hHook[0]) DllCallbackFree($hKeyProc) Func _Mouse_Handler($nCode, $wParam, $lParam) Switch BitAND($WParam, 0xFFFF) Case 512 ;Mouse Move PrintF("Mouse Moving") Case 513 ;Primary Down PrintF("Primary Down [Blocked]") Return 1 ;Block default processing Case 514 ;Primary Up PrintF("Primary Up") Case 516 ;Secondary Down PrintF("Secondary Down") Case 517 ;Secondary Up PrintF("Secondary Up") Case 519 ;Midle Down PrintF("Midle Down") Case 520 ;Midle Up PrintF("Midle Up") Case 522 ;Mouse Whell PrintF("Mouse Whell") Case Else PrintF("Event: " & BitAND($WParam, 0xFFFF)) Return 0 ;Allow default processing EndSwitch EndFunc Func PrintF($sString, $iMode=0, $iLine=@ScriptLineNumber) If $iMode = 0 Then ConsoleWrite("+======================================================" & @LF & _ "--> Script Line (" & $iLine & "):" & @LF & "!" & @TAB & $sString & @LF & _ "+======================================================" & @LF) Else MsgBox(64, "Debug", "> Script Line (" & $iLine & "):" & @LF & @LF & "Debug:" & @LF & $sString) EndIf EndFunc |
|
------- Отправлено: 09:02, 12-02-2008 | #123 |
Пользователь Сообщения: 143
|
Профиль | Отправить PM | Цитировать Как реализовать при наведении мышки на картинку, курсор меняет вид, как уловить вот это момент поменял ли он вид или нет???
Для пирмера, на этом форуме если мышку довести до списка страниц то она вместо стрелочки окажется рукой. |
Отправлено: 13:46, 12-02-2008 | #124 |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать HORRIBLE,
GUICtrlSetCursor ( -1, 0 ) "-1" - означает предыдущую команду "0" - означает вид курсора или тебе нужно именно момент выловить??? |
Последний раз редактировалось Angelus, 12-02-2008 в 14:16. Отправлено: 14:05, 12-02-2008 | #125 |
Пользователь Сообщения: 143
|
Профиль | Отправить PM | Цитировать Angelus, именно, что уловить.
Я знаю только, что моя картинка находиться на постоянной высоте, а по горизонтале ее положение может меняться. Вожу мышкой на заданной высоте по горизонтали, бац при попадании на картинку поменялся курсор, мне надо нажать на эту картинку, если так и не нашел вожу дальше.... и .тд. высоту при этом не меняю. |
Отправлено: 14:19, 12-02-2008 | #126 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать HORRIBLE
Ммм...может проще определить координаты элемента, например функцией ControlGetPos()? |
------- Отправлено: 16:24, 12-02-2008 | #127 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать HORRIBLE,
Цитата:
Если AutoIt'овская, то наверное проще проверять положение мышки над картинкой, а если внешняя, то нужно циклом проверять MouseGetCursor: HotKeySet("{ESC}", "Quit") $Last_Cursor = MouseGetCursor() While 1 Sleep(100) $Current_Cursor = MouseGetCursor() If $Last_Cursor <> $Current_Cursor Then MsgBox(64, "Внимание!", _ StringFormat("Смена курсора:\n\nПредыдущий <%s>, Текущий <%s>", _ _GetCursorStringValue($Last_Cursor), _GetCursorStringValue($Current_Cursor)), 2) $Last_Cursor = $Current_Cursor EndIf WEnd Func _GetCursorStringValue($iValue) Local $aStr_Values[16] = ["Pointing/Grabbing hand", "APPSTARTING", "ARROW (Default?)", "CROSS", "HELP", "IBEAM (Selection)", _ "ICON", "NO", "SIZE", "SIZEALL", "SIZENESW", "SIZENS", "SIZENWSE", "SIZEWE", "UPARROW", "WAIT"] If $iValue < UBound($aStr_Values) And $iValue >= 0 Then Return $aStr_Values[$iValue] Return $iValue EndFunc Func Quit() Exit EndFunc |
|
------- Отправлено: 17:05, 12-02-2008 | #128 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Нужно напечатать файл-изображение, но при печати должен быть выведен диалог Мастера печати:
![]() _FilePrint/ShellExecute (одно и тоже) не подходят, они вызывают программу просмотра изображении и всё, печать не происходит (возможно потому что принтер у меня не установлен? ![]() Чувствую есть спец. команда для Dll'ки принтера, но какая, этого мне не удалось узнать. Есть список комманд RunDll32, но там вроде нет ничего подходящего. |
------- Отправлено: 10:36, 13-02-2008 | #129 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать Creat0R
Это пробовал? |
Отправлено: 11:03, 13-02-2008 | #130 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[архив - Часть 2] AutoIt скрипты | Vadikan | AutoIt | 985 | 21-01-2008 09:58 | |
Вопрос - [Архив] Антивирусные программы - ОБЩИЕ ВОПРОСЫ | FOX RED | Защита компьютерных систем | 67 | 21-11-2007 15:05 | |
[Архив - Часть 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 |
|