Wiele klawiatur i niskopoziomowych haków
Mam system, w którym mam wiele klawiatur i naprawdę muszę wiedzieć, z której klawiatury pochodzi pociągnięcie klawisza. Aby wyjaśnić konfigurację:
- mam zwykły komputer i klawiaturę USB
- mam zewnętrzny ekran VGA z twardymi klawiszami Klawisze twarde są mapowane jako standardowa klawiatura USB, wysyłając ograniczoną liczbę kodów klawiszy (F1, F2, Return, + i -)
Mam niskopoziomowy hook (w C#, ale w rzeczywistości wywołujący funkcjonalność Win32), który jest w stanie aby poradzić sobie z wejściem, nawet gdy moja aplikacja nie jest skupiona.
Problem polega na tym, że przy użyciu zwykłej klawiatury niektóre z mapowanych kodów klawiszy na ekranie zewnętrznym są wyświetlane przez aplikację. Jednym z naciśnięć klawiszy wysyłanych przez zewnętrzny ekran i używanych do potwierdzenia jest VK_RETURN. Jeśli nie mogę zidentyfikować "urządzenia" i filtrować na nim, użytkownik może wykonywać działania i potwierdzać je na ekranie, na który nawet nie patrzy.
Skąd mam wiedzieć która klawiatura była odpowiedzialna za naciśnięcie klawisza?
2 answers
Tak, jestem poprawiony, mój błąd, uczenie się czegoś nowego każdego dnia.
Oto moja próba nadrobienia tego :):
Zarejestruj urządzenia, których chcesz użyć do wejścia surowego (dwie klawiatury) za pomocą metody:: RegisterRawInputDevices ().
Możesz pobrać te urządzenia z GetRawInputDeviceList()
Po zarejestrowaniu urządzeń zaczniesz otrzymywać wiadomości WM_INPUT.
LParam wiadomości WM_INPUT zawiera Struktura RAWKEYBOARD, której można użyć do określenia klawiatury, z której pochodzi wejście, oraz Wirtualnego kodu klawiatury i rodzaju wiadomości (WM_KEYDOWN, WM_KEYUP,...)
Możesz więc ustawić flagę, skąd pochodzi ostatnia wiadomość, a następnie wysłać ją do zwykłych manipulatorów wprowadzania klawiatury.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-18 14:18:25
Nie ma mowy. Windows streszcza to dla Ciebie. Jak wspomniano, musisz napisać / zmodyfikować sterownik urządzenia.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-18 10:01:56