2010-09-16 12 views
6

Il mio amico sta imparando norvegese e voglio fare un programma di tasto di scelta rapida globale che invia chiavi qualiCome inviare le chiavi unicode con C++ (keybd_event)

æ 
ø 
å 

Il mio problema è che la funzione keybd_event solito mi permetta di inviare quelle chiavi, mi sembra di essere limitato al virtual key codes c'è un'altra funzione che potrei usare o qualche trucco per inviarli?

risposta

4

È necessario utilizzare SendInput. keybd_event non supporta l'invio di tali caratteri (eccetto se sono già nella codepage corrente, come nei computer norvegesi). Un po 'di codice di esempio per inviare un A:

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

In caso non lo sa: è facile da installare tastiere aggiuntive su Windows e passare da uno all'altro con una scorciatoia.

Lykke til!

+0

Grazie! funziona perfettamente, ho provato questo metodo una volta prima ma ho messo il wScan come 'æ' e non ha funzionato ... pensavo che lo avrebbe convertito in esadecimale per me: P grazie ancora! – Kaije

+0

Ah, notato se si dice wScan = _T ('æ'); o L'æ '; anche questo funziona, non devi calcolare il codice esadecimale per questo. – Kaije

Problemi correlati