Opt("MouseClickDownDelay", [ВРЕМЯ ЗАЖАТИЯ КЛАВИШИ В МС]
Opt("MouseClickDownDelay", 120)
Не следует так переживать - всё есть. Вот примерв auto it нет. Как это так?
#include <SendMessage.au3>
#include <WindowsConstants.au3>
Run("notepad.exe")
$wnd = WinWaitActive("[class:Notepad]")
ControlSend($wnd, "", "Edit1", "^h")
$wnd = WinWait("Заменить")
$ctrl = ControlGetHandle($wnd, "", "Button6") ; кнопка "Отмена"
; -----------------------------------------------------------
_SendMessage($ctrl, $WM_LBUTTONDOWN) ; <= нажатие ЛКМ
Sleep(3000) ; <= продолжительность удержания ЛКМ
_SendMessage($ctrl, $WM_LBUTTONUP) ; <= отпускание ЛКМ
; -----------------------------------------------------------
WinClose("[class:Notepad]")
$hWnd = ControlGetHandle("окно", "" ,"id" )
_ControlClickEx( $hWnd, "left", 1, 30, 76 )
Opt("MouseClickDownDelay", 120)
Func _ControlClickEx( $hWnd, $sButton = "left", $iClicks = 1, $iX = 0, $iY = 0, $iClickDownTime = 1000, $iClickDelay = 200 )
Local $User32Dll = DllOpen( "user32.dll" ), $vButton, $Idx, $tPOINT, $pPOINT, $tagPOINT
; ---
Switch $sButton
Case "middle"
$vButton = 0x04
Case "right"
$vButton = 0x02
Case Else
$vButton = 0x01
EndSwitch
If Not $iX And Not $iY Then
$pPOINT = 0
Else
$tPOINT = DLLStructCreate( $tagPOINT )
DLLStructSetData( $tPOINT, "X", $iX )
DLLStructSetData( $tPOINT, "Y", $iY )
$pPOINT = DllStructGetPtr( $tPOINT )
EndIf
; ---
DllCall( $User32Dll, "long", "PostMessage", "hwnd", $hWnd, "int", 0x02A1, "int", 0, "int", $pPOINT ) ;На счет wParam не уверен.
For $Idx = 1 To $iClicks Step 1
DllCall( $User32Dll, "long", "PostMessage", "hwnd", $hWnd, "int", 0x0100, "int", $vButton, "int", $pPOINT )
If $iClickDownTime Then _
Sleep( $iClickDownTime )
DllCall( $User32Dll, "long", "PostMessage", "hwnd", $hWnd, "int", 0x0101, "int", $vButton, "int", $pPOINT )
If $iClickDelay And $Idx < $iClicks Then _
Sleep( $iClickDelay )
Next
; ---
DllClose( $User32Dll )
EndFunc
#include <SendMessage.au3>
#include <WindowsConstants.au3>
$ctrl = ControlGetHandle("Загловок окна", "", "")
_SendMessage($ctrl, $WM_LBUTTONDOWN) ; <= нажатие ЛКМ
Sleep(3000) ; <= продолжительность удержания ЛКМ
_SendMessage($ctrl, $WM_LBUTTONUP) ; <= отпускание ЛКМ
Давайте по порядку.Все равно не получается
Данная опция действует на функции Mouse*(). На ControlClick() - не действует.Opt("MouseClickDownDelay", 120)
В этой строчке нет необходимости.;На счет wParam не уверен
Это сообщения для клавиш клавиатуры, а не мыши. Для ЛКМ будут WM_LBUTTONDOWN (0x0201) и WM_LBUTTONUP (0x0202). Попробовал ваш код с этими сообщениями на стандартных кнопках - работает. Полный перечень здесь http://autoit-script.ru/autoit3_docs/appendix/WinMsgCodes.htm0x0100 0x0101
Если вы не указываете конкретный контрол, то будет выбран элемент с фокусом ввода. Если такого нет, то, вероятно, будут проблемы.$ctrl = ControlGetHandle("Загловок окна", "", "")
Сообщение с координатами, в принципе, можно отправить любому окну или элементу. А вот как этот элемент будет его обрабатывать - это уже разбираться надо (как обрабатывает флэш - я не знаю).нажать в флеш приложение