Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Закрытая тема
Настройки темы
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

(*.*)


Сообщения: 36560
Благодарности: 6694


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 21-01-2009
Описание: архив
Внимание!


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

Пожалуйста, не создавайте тем с названием "Помогите!" или "Нужна помощь по AutoIt". Это и так понятно Заголовок темы должен быть осмысленным.



Сайт программы
Русская справка
Коллекция AutoIt скриптов от Sanja Alone
Коллекция AutoIt скриптов от MSFN (могут быть устаревшие).


Справочник по командам rundll32 (команды запуска диалоговых окон и не только...)

AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо).

Архивы старых тем по AutoIt или они же в 7z архиве (версии для печати) - 846 кб (настоятельно рекомендуется к прочтению/поиску)
(он же прикреплен в шапке)


Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров.
Цитата Vadikan:
В теме уже свыше 500 сообщений и поиск нужной информации в ней усложняется. Есть предложение собрать все решения (скрипты) и разместить их на Wiki по принципу "один скрипт - одна статья wiki", добавляя статьи в категорию Autoit. Речь, в принципе, идет об общих решениях, а не о скриптах для установки конкретной программы. Название статьи, очевидно, должно отражать назначение скрипта. Затем можно в шапке просто разместить ссылки на статьи Wiki.

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:02, 05-02-2006

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


amel27,
Цитата:
Имхо идентификации окна по одному заголовку маловато, надо проверять на его принадлежность текущему процессу
Согласен. Но во время построения примера я был озабочен другими проблемами

Цитата:
Типа такого
Хм.. не совсем понял как это использовать из функции, ведь hWnd нам не известен, если бы он был известен, то можно было бы просто использовать его вместо заголовка

Вот пример с функцией, возвращает идентификатор окна (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
А по поводу моей проблемы с мышкой, есть идеи что можно придумать?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 07:40, 12-02-2008 | #121



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить 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:
как это использовать из функции, ведь hWnd нам не известен »
ну, видимо перебрать все окна с одинаковыми титлами и найти своё...
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:53, 12-02-2008 | #122


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить 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
Теперь я наконец могу завершить свой проэкт. Спасибо!

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:02, 12-02-2008 | #123


Пользователь


Сообщения: 143
Благодарности: 24

Профиль | Отправить PM | Цитировать


Как реализовать при наведении мышки на картинку, курсор меняет вид, как уловить вот это момент поменял ли он вид или нет???
Для пирмера, на этом форуме если мышку довести до списка страниц то она вместо стрелочки окажется рукой.

Отправлено: 13:46, 12-02-2008 | #124


Аватара для Angelus

Пользователь


Сообщения: 52
Благодарности: 0

Профиль | Отправить PM | Цитировать


HORRIBLE,
GUICtrlSetCursor ( -1, 0 )
"-1" - означает предыдущую команду
"0" - означает вид курсора
или тебе нужно именно момент выловить???

Последний раз редактировалось Angelus, 12-02-2008 в 14:16.


Отправлено: 14:05, 12-02-2008 | #125


Пользователь


Сообщения: 143
Благодарности: 24

Профиль | Отправить PM | Цитировать


Angelus, именно, что уловить.

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

Отправлено: 14:19, 12-02-2008 | #126


Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


HORRIBLE
Ммм...может проще определить координаты элемента, например функцией ControlGetPos()?

-------
Сообщение помогло? Не забудьте нажать на Полезное сообщение


Отправлено: 16:24, 12-02-2008 | #127


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


HORRIBLE,
Цитата:
как уловить вот это момент поменял ли он вид или нет???
Эта картинка часть AutoIt'овского GUI? или внешняя картинка?

Если 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
В случае с курсором руки (наведение над ссылкой), будет выведено «Текущий: Pointing/Grabbing hand».

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:05, 12-02-2008 | #128


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Нужно напечатать файл-изображение, но при печати должен быть выведен диалог Мастера печати:



_FilePrint/ShellExecute (одно и тоже) не подходят, они вызывают программу просмотра изображении и всё, печать не происходит (возможно потому что принтер у меня не установлен? ). Но если нажать кнопку «Печать» в этой самой программе просмотра, то выводится диалог мастера печати. Вот он мне и нужен, только без программы просмотра.

Чувствую есть спец. команда для Dll'ки принтера, но какая, этого мне не удалось узнать. Есть список комманд RunDll32, но там вроде нет ничего подходящего.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 10:36, 13-02-2008 | #129


Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


Creat0R
Это пробовал?
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:03, 13-02-2008 | #130



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[архив - Часть 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




 
Переход