2010-09-16 29 views
6

Bạn tôi đang học Na Uy và tôi muốn thực hiện một toàn cầu chương trình trọng điểm nóng đó sẽ gửi các phím nhưLàm thế nào để gửi phím unicode với C++ (keybd_event)

æ 
ø 
å 

Vấn đề của tôi là chức năng keybd_event sẽ không cho phép tôi gửi những chìa khóa, tôi dường như bị hạn chế để virtual key codes là có một chức năng mà tôi có thể sử dụng hoặc một số thủ thuật để gửi cho họ?

Trả lời

4

Bạn phải sử dụng SendInput để thay thế. keybd_event không hỗ trợ gửi các ký tự như vậy (trừ khi chúng đã có trong trang mã hiện tại, như trên các máy tính Na Uy). Một chút mã mẫu để gửi å:

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

Trong trường hợp bạn không biết: dễ cài đặt bố cục bàn phím bổ sung trên Windows và chuyển đổi giữa chúng bằng phím tắt.

Lykke til!

+0

Cảm ơn! hoạt động hoàn hảo, tôi đã thử phương pháp này một lần trước nhưng tôi đặt wScan là 'æ' và nó không hoạt động ... tôi nghĩ rằng nó sẽ chuyển đổi nó sang hex cho tôi: P cảm ơn một lần nữa! – Kaije

+0

Ah, chú ý nếu bạn nói wScan = _T ('æ'); hoặc L'æ '; cũng hoạt động, không cần phải tìm ra mã hex cho nó. – Kaije

Các vấn đề liên quan