Что нового

Эмуляция мыши в 3D игре

RunBust

Новичок
Сообщения
6
Репутация
0
Не получается переместить прицел в crossout. MouseMove не работает. Возможно стоит какая-то защита, потому что в других играх, например в CS:GO, все работает.
Есть ещё какие-нибудь способы эмулировать движение мыши?
 

eralex

Знающий
Сообщения
63
Репутация
5
попробуй так
Код:
Func _MouseMove_HWND_PM($hWnd, $X, $Y, $delay = 5)
  Local Const $MK_LBUTTON = 0x0001
  _WinAPI_PostMessage($hWnd, $WM_SETCURSOR, $hWnd, _WinAPI_MakeLong($HTCLIENT,  $WM_MOUSEMOVE))
  _WinAPI_PostMessage($hWnd, $WM_MOUSEMOVE, $MK_LBUTTON, _WinAPI_MakeLong($X, $Y))
  Sleep($delay)
EndFunc
 
Автор
R

RunBust

Новичок
Сообщения
6
Репутация
0
Не работает, даже в главном меню курсор не двигается
 

eralex

Знающий
Сообщения
63
Репутация
5
Может
Код:
$hWnd
неправильно определяешь? Нетуда шлёшь сдвиг мыши.

И запускай игру не в полноэкранном режиме, а в оконном.
 
Автор
R

RunBust

Новичок
Сообщения
6
Репутация
0
Код:
#include <WinAPI.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
WinActivate("Crossout 0.8.45.66254")
Sleep(1000)
Func _MouseMove_HWND_PM($hWnd, $X, $Y, $delay = 5)
  Local Const $MK_LBUTTON = 0x0001
  _WinAPI_PostMessage($hWnd, $WM_SETCURSOR, $hWnd, _WinAPI_MakeLong($HTCLIENT,  $WM_MOUSEMOVE))
  _WinAPI_PostMessage($hWnd, $WM_MOUSEMOVE, $MK_LBUTTON, _WinAPI_MakeLong($X, $Y))
  Sleep($delay)
EndFunc

_MouseMove_HWND_PM("Crossout 0.8.45.66254",100,0);

hWnd вроде правильно, т.к WinActivate работает.
Игра запущена в оконном режиме.
Прицел не хочет двигаться.
 

eralex

Знающий
Сообщения
63
Репутация
5
hWnd вы совершенно неправильно опредеяете. Попробуйте так

Код:
$hWnd = WinGetHandle("Crossout 0.8.45.66254")


или так

Код:
$hWnd = _WinAPI_GetParent(WinGetHandle("Crossout 0.8.45.66254", ""))


Я надеюсь, что "Crossout 0.8.45.66254" - это то, что у вас в заголовке окна писано.
 
Автор
R

RunBust

Новичок
Сообщения
6
Репутация
0
Код:
#include <WinAPI.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
WinActivate("Crossout 0.8.45.66254")
Sleep(1000)
$hWnd1 = _WinAPI_GetParent(WinGetHandle("Crossout 0.8.45.66254", ""))
Func _MouseMove_HWND_PM($hWnd, $X, $Y, $delay = 5)
  Local Const $MK_LBUTTON = 0x0001
  _WinAPI_PostMessage($hWnd, $WM_SETCURSOR, $hWnd, _WinAPI_MakeLong($HTCLIENT,  $WM_MOUSEMOVE))
  _WinAPI_PostMessage($hWnd, $WM_MOUSEMOVE, $MK_LBUTTON, _WinAPI_MakeLong($X, $Y))
  Sleep($delay)
EndFunc

_MouseMove_HWND_PM($hWnd1,100,0,5);

Все равно не работает
 

eralex

Знающий
Сообщения
63
Репутация
5
а так
Код:
$hWnd = WinGetHandle("Crossout 0.8.45.66254")


проверял?

Покажи информацию об игровом окне через Autoit Window Info.

Попробуем через класс окна хэндл получить
 
Автор
R

RunBust

Новичок
Сообщения
6
Репутация
0
Screenshot_2.jpg
 

eralex

Знающий
Сообщения
63
Репутация
5
вот так попробуй
Код:
$KLIENT = "[CLASS:game_main_window]"

$hWnd = WinGetHandle($KLIENT)
 
Верх