2010-06-17 14 views
10

Ho due tastiere collegate a un PC. Uno è utilizzato per digitare TMemo1 e l'altro in TMemo2. Entrambi possono scrivere allo stesso tempo. Il problema è che non riesco a distinguere quale tastiera-uno abbia digitato e quale tastiera-due abbia digitato.Come distinguere più tastiere in Delphi?

C'è un modo per distinguere, da quale dispositivo provengono determinati input?

risposta

31

@Dian, è possibile utilizzare la funzione RegisterRawInputDevices per registrare le tastiere e monitorare il messaggio WM_INPUT per determinare il dispositivo (tastiera) da cui proviene l'input.

controllo Tesi link per ulteriori informazioni

+1

+1 Ho imparato qualcosa di nuovo (di nuovo). grazie –

+0

Suppongo che dovrò creare una versione delphi del codice C#? * sospiro * Ci proverò. Grazie per aver risposto! : D – Dian

+0

Non avevo idea che potessi farlo in Windows. –

0

Per quanto ne so, non c'è modo di distinguere le tastiere fino a quando non si ha un driver della tastiera agganciato. Windows fornisce un modello di input solido all'applicazione, quindi non vi è alcuna differenza per l'input di ricezione delle applicazioni da tastiera, seconda tastiera, telecomando IR o da un altro programma che utilizza la funzione API SendInput.

+0

Questo è sbagliato. [Raw Input] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms645536.aspx) consente di discernere l'input da diversi dispositivi di input. Usando un hook per tastiera di basso livello puoi anche distinguere tra input genuino e input da una chiamata a 'SendInput'. Il campo * flags * della struttura [KBDLLHOOKSTRUCT] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms644967.aspx) contiene queste informazioni. – IInspectable

Problemi correlati