Skocz do zawartości

[Delphi] Klawiatura numeryczna


Stelma

Polecane posty

Witam,

 

Mam bardzo proste zadanie otóż chodzi o wysłanie do aplikacji (uchwyt mam) symulacji wciśnięcia jakiegoś z numpadów.

 

 

Problem jest w tym że co bym nie robił i nie ważne czy numlock'a włącze ręcznie i wyłącze ręcznie to i tak wysyłana jest cyfra zamiast strzałki na ukos.

 

SendMessage ( Self.ID, WM_KEYDOWN, VK_NUMPAD3, 0);

 

Self.ID to uchwyt aplikacji. Domyślam się że trzeba wysłać specjalną strukturę ale do cholerci jak :P

 

Z góry dzięki za pomoc

Link do komentarza
Udostępnij na innych stronach

Nie spotkałem się nigdy z komunikatem ukośnej strzałki.

Nawet w MSDN nic nie znalazłem o ukośnej strzałce, brak takiego komunikatu.

Sam sprawdziłem i jest tak:

Wysyłając NumPad3 (wartość VK_NUMPAD3 = 99) dostaję w kolejce komunikatów 99 wiec prawidłowo.

To z tej napiszę, byś sprecyzował swoje pytanie i dokładniej opisał swoje zamierzenia.

Prawdziwy programista wiesza sie wraz ze swoim programem.

Link do komentarza
Udostępnij na innych stronach

Czy ta zewnętrzna aplikacja obsługuje komunikat WM_KEYDOWN? Bo jak rozumiem wysyłasz ją do całego okna, a nie konkretniej kontrolki na przykład edycyjnej? Pytam, bo wiele ludzi sobie uori, że wysyłając WM_CHAR do okna aplikacji zasymulują naciśnięcie klawisza ze znakiem. A trzeba mieć minimalne pojęcie chociaż o WinAPI. Jeżeli kontrolka niż eydycjna albo nawet taka czy też okno aplikacji nie obsługują wiadomości WM_KEYDOWN, a na ogół tak jest. To pozostaje tylko symulacja klawiszy przy aktywnym oknie programu na pierwszym planie przez Keyb_Event albo SendInput. Szczegóły użycia wspomnianych funkcji znajdziesz w google. No i należy pamiętać WM_CHAR wysyłamy tylko do kontrolek edycyjnych. To samo WM_KEYDOWN, chyba, że formatka je obsługuje. Ja na przykład w soich aplikacjach WinAPI obsługuje to zdarzenie tylko dla klawisza VK_RETURN sprawdzając czy Focus jest na pole edycyjne, po to że jak użytkownik naciśnie Enter w polu edycyjnym to ma się wykonać dana czynność jeżeli inny przycisk jest aktywny, co jest zależne od zawartości tego pola edycyjnego. Inny klawisz jaki obsługuje to tylko VK_ESCAPE to zamknięcia aplikacji. Rozpisałem się - wybacz/cie, ale mam nadzieję, że zrozumiałeś ideę.

Pozdrawiam: olesio

Link do komentarza
Udostępnij na innych stronach

Dzięki chłopaki za odzew mimo niedzieli.

 

A więc tak na początku powiem że aplikacja na pewno obsługuje strzałki ukośne przy wyłączonym numlocku (przecież chodze na ukos).

 

Aplikacja to jedno okno. Wszystko wewnątrz jest rysowane i nie posiada uchwytu. Sprawdzałem kilkoma programami i za pomocą FindWindowEx. Co do komunikatów aplikacja je poprawnie rozpoznaje bo klawisze jak 'a', F12 wysyłają się bez kłopotu.

 

 

Może powinienem jakoś num lock'a wysłać razem ze strzałką ? W sumię mogę spróbować założyć hooka na klawiaturę i sprawdzić co ślę do aplikacji bezpośrednio z klawiatury...

Link do komentarza
Udostępnij na innych stronach

Czyli aplikacja odbiera kod 99 jeżeli chodzi o NumPad3.

Jeszcze inna sprawa, widziałem klawiaturki co pod Numpad3 mają podpięte PAGEDOWN, co równoznaczne jest z kodem 22 i możesz spróbować wysłać taki kod.

U mnie na laptopie po włączeniu numloka(144) wciskając trójeczkę dostaję (99).

Lepiej to może prześlij linka do tej aplikacji (gry) i postaram się pomóc bardziej, dzięki testom na tej aplikacji.

Prawdziwy programista wiesza sie wraz ze swoim programem.

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...