Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   движения мыши и передача процессу (http://forum.oszone.net/showthread.php?t=211930)

yukuru 26-07-2011 00:29 1719873

движения мыши и передача процессу
 
Версия AutoIt: 3.3

Описание:
необходимо написать код,который будет
1. перехватывает движение мыши
2. меняет на свои значения
3. передает процессу "1.ехе"

Примечания:
проблема в том что MouseMove в этом процессе(1.ехе) не работает.

Перехват- определение движения мыши раньше других процессов. и не дать другим процессам ПОЛУЧИТЬ ИСТИННЫЕ координанты мыши.

проще гоовря- процес 1.ехе перехвтывает координаты мыши движется к ним и возвращает координаты 0,0 .(к примеру) для всех остальных .
а мне надо перехватить значение движения мыши ДО процесса 1.ехе изменить их и передать уже дальше измененные для процесса 1.ехе

КАким образом передавать- не знаю. ...
бытует мнение что не плохо бы изменить users32.dll от куда скорее всего 1.ехе и считывает координаты

возможно что процесс сам получает данные из users32.dll, может просто менять значение в этой длл-ки? и тогда перехватывать движение не надо а просто блокировка движения "настощей" мыши.

yukuru 27-07-2011 02:48 1720638

Хорошо может тогда ктонитьбуь расскажет о
mouse_event,
ClipCursor,
GetCursor,
GetCursorPos,
SetCaretPos,
SetCursorPos,
SetWindowsHookExA,
TrackMouseEvent

madmasles 27-07-2011 05:04 1720648

yukuru,
WinAPIEx.au3 (http://autoit-script.ru/index.php/topic,47.0.html):
_WinAPI_ClipCursor()
_WinAPI_GetCursor()
_WinAPI_SetCaretPos()
_WinAPI_TrackMouseEvent()


WinAPI.au3:
_WinAPI_SetWindowsHookEx()


GetCursorPos() http://msdn.microsoft.com/en-us/libr...90(VS.85).aspx
SetCursorPos() http://msdn.microsoft.com/en-us/libr...94(VS.85).aspx

yukuru 27-07-2011 14:46 1720879

Мад. прости меня конечно, но...

...я блин сначала вотЪ это перерыл, прежде чем о них начать спрашивать
http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx

мне всеже просто не понятно некоторые моменты работы.

надо заставить двигаться мышь. помоги

$return = DllCall("user32.dll", "int", "SetCursorPos","int","300","int","500") и MouseMove ( 300,500 ) не помогло.
мышь не двигается в запущеннном окне программы(хотя в остальых окнах -при отсутвиии этой программы двигается)

madmasles 27-07-2011 16:25 1720941

yukuru,
Код:

#include <StructureConstants.au3>

$iX = 100
$iY = 200
$aRet = DllCall('User32.dll', 'int', 'SetCursorPos', 'int', $iX, 'int', $iY)
ConsoleWrite(@error & @TAB & $aRet[0] & @CR)
Sleep(1000)

$t_Point = DllStructCreate($tagPOINT)
$Ret = DllCall('User32.dll', 'int', 'GetCursorPos', 'ptr', DllStructGetPtr($t_Point))
If (@error) Or (Not $Ret[0]) Then
    ConsoleWrite(@error & @TAB & $Ret[0] & @CR)
Else
    $i_X = DllStructGetData($t_Point, 'X')
    $i_Y = DllStructGetData($t_Point, 'Y')
    ConsoleWrite('X: ' & $i_X & @TAB & 'Y: ' & $i_Y & @CR)
EndIf

Но у меня большое подозрение, что родные функции MouseMove() и MouseGetPos() получают(передают) данные примерно также, то есть если Ваша игра блокирует каким-то образом движение мыши, то, ИМХО, это вряд ли поможет.

yukuru 27-07-2011 17:07 1720972

вотЪ о чем я и говорю, как же ж не понятно.

в ЭТОМ куск кода мы НАЗНАЧАЕМ координаты мыши.
тоесть мышь "телепортируется" туда.

а нужно сделать чтобы мышь ДВИГАЛАСЬ.

Yashied 27-07-2011 19:29 1721038

Для этого нужно перехватывать вызовы системных функций. В AutoIt это сделать не получиться. Изучай C/C++...

yukuru 27-07-2011 19:46 1721043

ясно, как как импортирвоть код на С в Autoit?

ксати а разве нельзя использовать чтото вроде SetWindowsHookExA для перехвата системных функций?


Время: 04:08.

Время: 04:08.
© OSzone.net 2001-