Что нового

Клик мышью черезdllcall

Isn

Новичок
Сообщения
119
Репутация
3
Приветствую всех форумчан, второй день ищу по форуму, как реализовать клик мышью через dllcall, прочитал не одну и так и не понял как это реализовать, подскажите.
 

Spyhunter

Знающий
Сообщения
56
Репутация
13
В каких-то примерах у себя нашёл такое:

Код:
#include <WindowsConstants.au3>

Local $Button = $WM_LBUTTONDOWN
;Local $Button = $WM_RBUTTONDOWN
;Local $Button = $WM_MBUTTONDOWN
Local $Delay = 100

DllCall("user32.dll", "bool", "PostMessage", "hwnd", $hWnd, "int", $Button, "int", "0", "long", _MakeLong($X, $Y))
Sleep($Delay)
DllCall("user32.dll", "bool", "PostMessage", "hwnd", $hWnd, "int", $Button + 1, "int", "0", "long", _MakeLong($X, $Y))

Func _MakeLong($LoDWORD, $HiDWORD) ;WinAPI.au3
    Return BitOR($HiDWORD * 0x10000, BitAND($LoDWORD, 0xFFFF))
EndFunc
 
Автор
Isn

Isn

Новичок
Сообщения
119
Репутация
3
Попробывал пример не работет
Может есть еще какие ни будь варианты?
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
_WinAPI_Mouse_Event()
Использует вызов:
Код:
Func _WinAPI_Mouse_Event($iFlags, $iX = 0, $iY = 0, $iData = 0, $iExtraInfo = 0)
	DllCall("user32.dll", "none", "mouse_event", "dword", $iFlags, "dword", $iX, "dword", $iY, "dword", $iData, "ulong_ptr", $iExtraInfo)
	If @error Then Return SetError(@error, @extended)
EndFunc

Или все же не то?


Добавлено:
Сообщение автоматически объединено:

Если у вас есть русская справка в корне раздела Autoit то можете прочитать там.
 
Автор
Isn

Isn

Новичок
Сообщения
119
Репутация
3
Re: Клик мышью через dllcall

Как это использовать приведите пример что за переменная $iFlags в справке написано что $MOUSEEVENTF_LEFTDOWN, приведите пожалуйста хоть один пример с использованием вашего кода.
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Блин, снова забыл=)
Код:
#include<WinAPI.au3>
#include<Constants.au3>
_WinAPI_Mouse_Event($mouseeventf_move,300,300);Передвижение курсора в координаты х=300 у=300
_WinAPI_Mouse_Event($mouseeventf_leftdown,300,300);Тыкает левой кнопкой в координаты 300;300 и зажимает
_WinAPI_Mouse_Event($mouseeventf_leftup);Отпускает левую кнопку
#cs
Прочитал первый параметр - тыканье в координаты и передвижение происходят относительно позиции курсора
это означает то что:
если ваш курсор был в координатах 540;580 то к ним прибавится значение 300;300 и получается что тыкать будет
в координатах 840;880
#ce



Добавлено:
Сообщение автоматически объединено:

Пытался использовать сложение BitOR для нужного параметра сложенным с $MOUSEEVENTF_ABSOLUTE - странное дело, тыкать начинает только в координатах 0;0 не зависимо от указанных координат
Код:
_WinAPI_Mouse_Event(BitOR($MOUSEEVENTF_ABSOLUTE,$mouseeventf_move),400,400)

Такая конструкция отправляет курсор в координаты 6;4
 
Верх