2010-09-16 4 views
6

Mein Freund lernt Norwegisch und ich möchte sendet ein globales Hot-Key-Programm machen, die Tasten wieWie Unicode-Tasten mit C++ (keybd_event)

æ 
ø 
å 

Mein Problem sendet, ist, dass keybd_event Funktion läßt mich nicht zu Bitte senden sie diese Schlüssel, scheinen ich auf die virtual key codes beschränkt werden soll, gibt es eine andere Funktion, die ich verwenden könnte oder ein Trick, sie zu schicken?

Antwort

4

Sie haben stattdessen Send zu verwenden. keybd_event unterstützt das Senden solcher Zeichen nicht (außer wenn sie bereits auf der aktuellen Codepage sind, wie auf norwegischen Computern). Ein bisschen von Beispielcode eine A zu senden:

KEYBDINPUT kb={0}; 
INPUT Input={0}; 

// down 
kb.wScan = 0x00c5; 
kb.dwFlags = KEYEVENTF_UNICODE; 
Input.type = INPUT_KEYBOARD; 
Input.ki = kb; 
::SendInput(1,&Input,sizeof(Input)); 

// up 
kb.wScan = 0x00c5; 
kb.dwFlags = KEYEVENTF_UNICODE|KEYEVENTF_KEYUP; 
Input.type = INPUT_KEYBOARD; 
Input.ki = kb; 
::SendInput(1,&Input,sizeof(Input)); 

Falls Sie nicht wissen: es ist einfach, zusätzliche Tastaturlayouts unter Windows zu installieren und zwischen ihnen wechseln mit einer Verknüpfung.

Lykke til!

+0

Dank! funktioniert perfekt, ich habe diese Methode schon einmal ausprobiert, aber ich habe den wScan als 'æ' gesetzt und es hat nicht funktioniert ... ich dachte, es würde es für mich in hex konvertieren: P danke nochmal! – Kaije

+0

Ah, bemerkt, wenn Sie sagen wScan = _T ('æ'); oder L'æ '; das funktioniert auch, muss einfach nicht den Hex-Code dafür herausfinden. – Kaije