2010-06-17 13 views
10

Tengo dos teclados conectados a una PC. Uno se usa para escribir en TMemo1 y el otro en TMemo2. Ambos pueden escribir al mismo tiempo. El problema es que no puedo distinguir qué teclado ha escrito uno y qué teclado ha escrito.¿Cómo distinguir varios teclados en Delphi?

¿Hay alguna manera de distinguir, de qué dispositivo proviene determinada entrada?

Respuesta

31

@Dian, puede usar la función RegisterRawInputDevices para registrar los teclados y supervisar el mensaje WM_INPUT para determinar el dispositivo (teclado) de donde proviene la entrada.

cheque Tesis enlaces para obtener más información

+1

+1 Aprendí algo nuevo (de nuevo). thx –

+0

Supongo que tendré que hacer una versión delphi del código C#? * suspiro * Lo intentaré. ¡Gracias por responder! : D – Dian

+0

No tenía idea de que pudieras hacer esto en Windows. –

0

Por lo que sé, no hay forma de distinguir los teclados hasta que haya conectado el controlador del teclado. Windows proporciona un modelo de entrada sólido para la aplicación, por lo que no hay diferencia para la aplicación que recibe la entrada desde el teclado, el segundo teclado, el control remoto por infrarrojos o desde otro programa que utiliza la función SendInput API.

+0

Esto está mal. [Entrada cruda] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms645536.aspx) le permite discernir la entrada desde diferentes dispositivos de entrada. Usando un gancho de teclado de bajo nivel también puede distinguir entre la entrada y la entrada genuinas de una llamada a 'SendInput'. El campo * flags * de la estructura [KBDLLHOOKSTRUCT] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms644967.aspx) contiene esta información. – IInspectable

Cuestiones relacionadas