So fangen Sie Strg + Alt + RShftKey

8

Seit einiger Zeit versuche ich Strg + Alt + Rechte Umschalttaste unter dem allgemeinen VBNET-Schlüsselhandler abzufangen. Hier sind meine Tests:

%Vor%

Windows 7, WinForms, VB2008, NET Framework 2.0

Warum kann ich Strg + Alt + Rechte Umschalttaste in der beschriebenen Situation nicht abfangen?
Oder wie fange ich Strg + Alt + Kombination der rechten Umschalttaste ?

    
Wine Too 16.08.2013, 21:21
quelle

3 Antworten

6

Es gibt keine Möglichkeit, Unterschiede zwischen Shifts mithilfe des standardmäßigen VB.NET-Ansatzes zu erkennen. Sie müssen dafür in Windows-API einhaken:

%Vor%     
Yuriy Galanter 16.08.2013, 21:39
quelle
3

Nun, das ist schwierig, da dies alles Modifier-Tasten sind und der Benutzer sie in beliebiger Reihenfolge drücken kann. Sie müssen eine Filterung durchführen, um sicherzustellen, dass ein 4. Tastendruck nicht erneut eine Übereinstimmung erzeugt, ein Problem mit der akzeptierten Antwort. Und die Rechts-Shift-Taste ist schwierig, wird beim Drücken als Keys.Shift gemeldet. Das erfordert Pin-Invoke, um zu prüfen, ob der Schlüssel gedrückt ist.

Das hat gut funktioniert:

%Vor%

Dies funktioniert, indem zuerst überprüft wird, dass alle drei Modifier-Tasten nicht gedrückt sind. Dann prüft es, dass die letzte Taste gedrückt wurde eins der drei Schlüssel, die Filterung, die sicherstellt, dass Sie nicht zu viele Übereinstimmungen bekommen. Schließlich prüft es, ob die rechte Umschalttaste gedrückt ist und nicht, indem auch die linke Umschalttaste gedrückt wurde.

    
Hans Passant 16.08.2013 21:51
quelle
1

Sieh dir das an:

%Vor%

Sie werden sehen, dass der Wert für Keys.ShiftKey für links und rechts gleich ist. Der Test für Keys.RShiftKey ändert sich. Das DECLARE von oben wird für den API-Aufruf benötigt.

    
rheitzman 16.08.2013 21:59
quelle

Tags und Links