2010-09-16 4 views
6

Mon ami est l'apprentissage norvégien et je veux faire un programme clé globale chaude qui envoie des touches telles queComment envoyer les clés unicode avec C++ (keybd_event)

æ 
ø 
å 

Mon problème est que la fonction keybd_event me permettra pas de envoyer ces clés, je semble être limité à la virtual key codes est-il une autre fonction que je pourrais utiliser ou un truc pour les envoyer?

Répondre

4

Vous devez utiliser SendInput à la place. keybd_event ne supporte pas l'envoi de tels caractères (sauf s'ils sont déjà dans la page de codes actuelle, comme sur les ordinateurs norvégiens). Un peu d'exemples de code pour envoyer un å:

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)); 

Si vous ne saviez pas: il est facile d'installer des dispositions de clavier supplémentaires sur Windows et basculer entre eux avec un raccourci.

Lykke til!

+0

Merci! fonctionne parfaitement, j'ai essayé cette méthode une fois avant mais j'ai mis le wScan comme 'æ' et cela n'a pas fonctionné ... j'ai pensé qu'il le convertirait en hexagone pour moi: P merci encore! – Kaije

+0

Ah, remarqué si vous dites wScan = _T ('æ'); ou L'æ '; cela fonctionne aussi, juste ne pas avoir à comprendre le code hexadécimal pour cela. – Kaije

Questions connexes