Kann ich Touchpad- und Mausmeldungen innerhalb eines Low-Level-Hook-Prozesses unterscheiden? (Win32)C++

Programme in C++. Entwicklerforum
Anonymous
 Kann ich Touchpad- und Mausmeldungen innerhalb eines Low-Level-Hook-Prozesses unterscheiden? (Win32)

Post by Anonymous »

Ich arbeite daran, Touchpad-spezifische Funktionen zu einer Windows-Desktopanwendung hinzuzufügen (geschrieben in C/C++). Hier sind meine Anforderungen:
  • Der Benutzer muss in der Lage sein, sowohl eine Standard-Windows-Maus als auch ein Touchpad gleichzeitig zu verwenden.
  • Alle Touchpad-HID-Ereignisse müssen von der Anwendung individuell behandelt werden, solange sie ausgeführt wird. Es darf nicht in der Lage sein, die Maus zu steuern oder mit anderen Fenstern zu interagieren.
  • Der normale Mausbetrieb darf nicht beeinträchtigt werden, wenn ein Touchpad verwendet wird.
Durch die Erforschung der Win32-API habe ich erfahren, dass ein Low-Level-Maus-Hook verwendet werden kann, um Touchpad-/Mauseingaben vom Rest des Systems zu blockieren. Ich habe eine Nachrichtenwarteschlange und einen einfachen Hook-Prozess.

Code: Select all

static LRESULT CALLBACK lowLevelHIDHookProc
(
int                 nCode,
WPARAM              wParam,
LPARAM              lParam
)
{
HHOOK ignored( NULL );

// have to pass message along to next hook
if( nCode < 0 )
{
return( CallNextHookEx( ignored, nCode, wParam, lParam ) );
}
// THIS IS WHAT I CAN'T FIGURE OUT
else if( eventComingFromNormalMouse ) // allow normal mouse events
{
return( CallNextHookEx( ignored, nCode, wParam, lParam ) );
}
// block touchpad stuff here
else
{
printf( "********\nTOUCH INTERCEPTED!!!\n********\n" );
return( -1 );
}
Was mich im Moment beschäftigt, ist die Unterscheidung von Mausmeldungen, die von Touchpads und normalen Mäusen kommen. Ich habe ein paar Open-Source-Projekte und Beispiele gefunden, die HID Raw Input verwenden, um generische Touchpad-Daten zu erkennen und zu lesen, aber sie sind in Ordnung, wenn der Mauszeiger deaktiviert ist, während das Touchpad verwendet wird. Stattdessen muss ich in diesem Hook-Proc herausfinden, ob die Nachricht von einem Touchpad-Gerät generiert wird, und nur in diesem Fall blockieren, damit die Maus normal funktionieren kann.
Ich schaue mir die lParam/MSLLHOOKSTRUCT-Dokumentation an, sehe aber nichts, was für diese Unterscheidung hilfreich erscheint. Ich bin offen für alle Ideen, einschließlich des Verzichts auf Low-Level-Hooks, da diese Auswirkungen auf die Leistung haben. Vielleicht gibt es eine Möglichkeit, eine serielle Verbindung zu einem USB-Touchpad herzustellen, ohne dass Windows es überhaupt als HID-Gerät erkennt?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post