Witajcie, potrzebuję pomocy w rozkminieniu jednej rzeczy.
Dla zabawy piszę sobie projekt do sterowania grą Hugo, chcę w niej wywoływać naciśnięcia klawiszy. Jednak pomimo, że samo symulowanie klawiszy to rzecz prosta, to nie wiedzieć czemu, Hugo nie chce na nie reagować.
Zarówno gdy wciśnięcie klawisza symuluję za pomocą keybd_event:
keybd_event( VK_LEFT, 0, 0, 0 );
keybd_event( VK_LEFT, 0, KEYEVENTF_KEYUP, 0 );
jak również gdy wysyłam to za pomocą SendInput:
INPUT ip;
ip.type = INPUT_KEYBOARD;
ip.ki.wScan = 0;
ip.ki.time = 0;
ip.ki.dwExtraInfo = 0;
ip.ki.wVk = VK_RIGHT;
ip.ki.dwFlags = 0;
SendInput( 1, & ip, sizeof( INPUT ) );
ip.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput( 1, & ip, sizeof( INPUT ) );
Oraz SendMessage:
SendMessage( hwnd, WM_KEYDOWN, VK_RIGHT, 0 );
SendMessage( hwnd, WM_KEYUP, VK_RIGHT, 0 );
W we wszystkich powyższych przypadkach, w notatniku, karetka(kursor) poprawnie zaczyna się przemieszczać, ale gra Hugo wciąż nie reaguje.
Próbowałem też różnych czasów opóźnienia pomiędzy wciśnięciem a odpuszczeniem klawisza(za pomocą zwykłego Sleepa), też nie pomogło.
Sprawdziłem za pomocą GetForegroundWindow oraz GetClassName, że poprawnie mój Hugo jest na pierwszym planie. Wywołanie na siłę SetFocus oraz SetActiveWindow też nic nie zmieniło.
Co do samego Hugo to nie wiem co mogę o nim powiedzieć, niewiele o nim wiem, więc podzielę się wszystkim co wiem na pewno: jest to gra leciwa, otwiera się w full screenie, folder DIRECTX sugeruje, że została napisana przy pomocy DIRECTXa i to w zasadzie tyle ile potrafię o niej powiedzieć.
Na chwilę obecną skończyły mi się pomysły, co jeszcze spróbować, żeby te wciśnięcia klawiszy do niej leciały. Przychodzi Wam coś do głowy?