Comment envoyer des lettres scandinaves à l’aide de SendInput

J’essaie de créer un clavier virtuel, qui simule le clavier à l’aide de la méthode SendInput, comme suit:

public static void SendKeyDown(System.Windows.Forms.Keys key) { INPUT k = new INPUT(); k.type = (int)InputType.INPUT_KEYBOARD; k.ki.wVk = (short)key; k.ki.dwFlags = (int)KEYEVENTF.KEYDOWN; k.ki.dwExtraInfo = GetMessageExtraInfo(); SendInput(1, new INPUT[] { k }, Marshal.SizeOf(k)); } 

Mais je ne trouve pas les lettres scandinaves Ä, Ö et Å des clés – énumération. Comment puis-je envoyer ces lettres en utilisant la méthode SendInput?

Vous pouvez envoyer des caractères Unicode à l’aide de KEYEVENTF_UNICODE .

 k.type = (int)InputType.INPUT_KEYBOARD; k.ki.wScan = 'ö'; k.ki.wVk = 0; k.ki.dwFlags = (int)KEYEVENTF.UNICODE | (int)KEYEVENTF.KEYDOWN; k.ki.dwExtraInfo = GetMessageExtraInfo(); 

Ceci est plus portable que votre solution Oem3 utiliser Oem3 et autres, dont le caractère atsortingbué varierait en fonction de la culture de la plate-forme sur laquelle votre application est exécutée.

(Les autres signatures P / Invoke se trouvent dans mon autre réponse .)

J’ai trouvé la solution moi-même:

Oem3 = ö, Oem7 = ä, Oem6 = å