Frage

Ich schreibe (noch ein anderer, Ich kenne) Tastaturumbilder mit C# und Visual Studio 2008.

ich folgte Dieser Leitfaden Um zu lernen, wie Sie Taste auf niedrigem Niveau aufschnappen. Dies funktioniert gut, um zB normale alphabetische Zeichen auf meiner Tastatur zu überschreiben, aber ich brauche ein bisschen mehr zu machen Caps Lock so tun als Strg.

Mein Verständnis (was möglicherweise falsch sein kann) ist das Caps Lock und Strg werden seitdem völlig anders als untereinander gehandhabt Caps Lock ist ein Umschaltungsschlüssel, obwohl Strg ist nur ein "normaler".

Also, was ich hier zu verstehen versuche, ist, wie man macht Caps Lock benimm dich wie a Strg Schlüssel auf der niedrigsten Ebene und auch, wie das Normalwert gemacht werden kann Strg Schlüsselhandlung wie a Caps Lock Schlüssel.

Vielen Dank

War es hilfreich?

Lösung

Pflegen Sie einen Bool, der den erwarteten Zustand der Caps -Sperre darstellt. Wenn die Caps -Sperrenschlüssel getroffen wird, stellen Sie die Systeme ein Caps Lock Wert zurück zum Wert des Bool. Wann Strg wird getroffen, den erwarteten Status der Caps -Sperre umschalten und den Wert des Systems auf den Wert des Bools einstellen.

Verwenden Sie Folgendes, um den anfänglichen erwarteten Zustand festzulegen:

[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true, CallingConvention=CallingConvention.Winapi)] 
public static extern short GetKeyState(int keyCode); 
bool CapsLock = (((ushort)GetKeyState(0x14)) & 0xffff) != 0;

Fügen Sie eine spezielle Logik in Hookcallback hinzu (aus dem von Ihnen angegebenen Link) für wann Strg und Caps Lock sind getroffen. Caps Lock ist, wenn Lparam ist &H14. Strg ist, wenn Lparam ist &H11.

Das System erhalten/festlegen Caps Lock Wert:

http://social.msdn.microsoft.com/forums/en-us/csharpgeneral/thread/fb8308e5-7620-43cc-8ad8-be67d94708fa/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top