2010-06-17 14 views
10

Mam dwie klawiatury podłączone do komputera. Jeden jest używany do pisania w TMemo1, a drugi w TMemo2. Oba mogą pisać w tym samym czasie. Problem polega na tym, że nie potrafię odróżnić, jaką klawiaturę wpisałem, a którą wpisałem na klawiaturze.Jak odróżnić wiele klawiatur w Delphi?

Czy istnieje sposób na odróżnienie urządzenia, z którego pochodzi dane wejście?

Odpowiedz

31

@Dian, możesz użyć funkcji RegisterRawInputDevices, aby zarejestrować klawiatury i monitorować komunikat WM_INPUT, aby określić urządzenie (klawiaturę), z którego pochodzi sygnał wejściowy.

check tez linki aby uzyskać więcej informacji

+1

+1 Nauczyłem się czegoś nowego (ponownie). thx –

+0

Zgaduję, że będę musiał zrobić wersję delphi kodu C#? * westchnienie * Spróbuję. Dzięki za odpowiedź! : D – Dian

+0

Nie miałem pojęcia, że ​​w ogóle można to zrobić w systemie Windows. –

0

O ile mi wiadomo, nie ma sposobu na odróżnienie klawiatur, jeśli nie masz podpiętego sterownika klawiatury. System Windows zapewnia stały model wejścia do aplikacji, więc nie ma różnicy dla aplikacji pobierającej dane wejściowe z klawiatury, drugiej klawiatury, pilota na podczerwień lub innego programu korzystającego z funkcji API SendInput.

+0

To jest złe. [Raw Input] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms645536.aspx) pozwala na odróżnienie danych wejściowych od różnych urządzeń wejściowych. Za pomocą haka klawiaturowego niskiego poziomu można również odróżnić autentyczne wejście i wejście od wywołania funkcji 'SendInput'. Pole * flags * struktury [KBDLLHOOKSTRUCT] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms644967.aspx) przenosi tę informację. – IInspectable

Powiązane problemy