Reagowanie procesu na Keybd_Event.

0

Czesc, mam pytanie dotyczace delphi 7 mianowicie chodzi mi o to by wyslac KeyBd_Event do procesu ,tak aby delphi dzialal w zminimalizowanym oknie : )

Z gory dziekuje i pozdrawiam.

0

Nauczcie się ludzie w końcu i ogarnijcie się! Przecież Keybd_Event nie jest komunikatem! Jest funkcją symulującą naciskanie klawiszy. Komunikaty wysyła się przez SendMessage albo PostMessage i można spróbować wysyłać WM_CHAR ale tylko do typowych kontrolek edycyjnych albo do okien czy kontrolek w aplikacjach, przy projektowaniu których programista założył, że taki komunikat może być obsłużony. Jeżeli nie zadziała Keybd_Event albo SendInput można jeszcze spróbować takiej metody jak injekcja dllki, na przykład przez moduł afxcodehook.pas możłiwy do wygooglowania, a następnie "podpiąć się" pod funkcje obsługi komunikatów głownego okna aplikacji (za pewne chodzi o jakąś grę lub coś co nie jest w standardowych okienkach z kontrolkami tylko działa na przykład pod DirectX) i próbowac wysyłać WM_KEYDOWN albo inne kombinacje. Bo czasami jest tak, że gra nie reaguje na takowe komunikaty, a obsługę klawiszy ma zrobioną niestandardowo. Ewentualnie jeżeli chcesz na przykład zrobić trainer na HotKeyach globalnych, ale takich na prawdę globalnych działąjących też w aplikacjach pełno ekranowych to możesz wykorzystać metodę z kodu źródłowego programu Cheat Engine. Odpowiednie moduły dołączyłem do tego posta. Są one oczywiście przepisane na WinAPI, bo mnie aktualnie pisanie w VCL jeśłi nie muszę - nie interesuje. I dla ścisłosci hotkeyhandler.pas, korzysta z tablicy dynamicznej, natomiast hotkeyhandler2.pas pozwala dodać maksymalnie 100 HotKeyów. Także podsumowując ja bym zrobił tak. Napisał sobie, najlepiej w WinAPI dllkę, która będzie "podczepiała się" pod funkcje obsługi okna aplikacji i będzie injectowana przez Twój program w proces gry. Wtedy sobie robisz logowanie do pliku wszystkich komunikatów i wartości WParam oraz LParam i później możesz upewnić się czy przesyłane klawisze nie są jakimiś specjalnymi komunikatami. Oczywiście jeżeli na an iSendInput ani Keybd_Event gra nie reaguje. Aby uprzedzić 1000 dodatkowych pytań dołączam kod w archiwum block_wmplayer_close.rar to sobie zobaszycz jak takie podpięcie pod okno WMPlayera z Windows 7 można zrobić. Blokuje on oczywiście możłiwośc zamknięcia WMPlayera przez "X" w prawym górnym rogu okna. Znajdziesz w archiwum wspomniany moduł afxcodehook.pas oraz useful_winapi.pas, który pozwoli Tobie wykonać wiele przydatnych operacji w WinAPI, między innymi odczyt oraz zapis do pliku tekstowego. I temat modyfikuje, bo widać żę pytający nie ma pojęcia co to są pakiety, komunikaty i procesy. O ile wiem to pakiety można wysyłać do klienta czy serwera, ale nie do procesów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1