2012-05-29 27 views
1

如何從虛擬鍵碼獲取關鍵文字?如何從虛擬鍵碼獲取密鑰文本?

KBDLLHOOKSTRUCT * kbhook = (KBDLLHOOKSTRUCT *) lParam; 
    cout << kbhook->vkCode <<endl; 

例如,對於q虛擬鍵代碼來是81.我要回q。我怎麼做 ?

Using UnicodeEx我該怎麼辦?

+0

可能重複的[如何將虛擬鍵碼轉換爲字符碼?](http://stackoverflow.com/questions/2309132/how-to-convert-virtual-key-code-to-character-code) – RedX

+0

答案就在你自己發佈的鏈接中......只需使用'ToUnicodeEx'和谷歌例子來開始。 – RedX

回答

2

閱讀ToUnicodeEx documentation,我會用這樣的嘗試:

wchar_t buff[10]; 

BYTE keyState[256] = {0}; 

int result = ToUnicodeEx(
    kbhook->vkCode, 
    kbhook->scanCode, 
    keyState, 
    buff, 
    _countof(buff), 
    0, 
    NULL); 

成功時,buff應該包含Unicode字符(S)。

+0

我得到[這種類型的輸出](http://i48.tinypic.com/357frky.jpg)for [this](http://i49.tinypic.com/35kkbo6.jpg) – saplingPro

+0

@grassPro:不要向'cout'寫'wchar_t []'。你需要'wcout'作爲'wchar_t []'。 – MSalters

+0

啊..這是一個錯誤!但程序不能區分大寫字母和小寫字母,不能說出特殊字符,不能分辨是否按下了換檔等。有什麼辦法呢? – saplingPro

-1
cout << char(kbhook->vkCode) << endl; 
+2

肯定不是一個好方法 – saplingPro