2011-04-01 135 views
1

我沒有鉤住某個進程的鍵盤。現在我需要更改發送給流程的關鍵信息。鍵盤掛鉤:更改密鑰代碼

例如:從小寫到大寫和相反。

我該怎麼做?

+2

什麼平臺?什麼API?任何代碼?你嘗試過什麼,失敗了? – ybungalobill 2011-04-01 14:36:30

+3

明年還有一個四月的傻瓜:) – pmg 2011-04-01 14:36:57

+0

http://stackoverflow.com/questions/3548932/keyboard-hook-changes-the-behavior-of-keys – 2011-04-01 14:43:14

回答

0

假設你的函數原型如下: LRESULT CALLBACK WndProc(HWND hWnd, UING uMsg, WPARAM wParam, LPARAM lParam), 你的信的值在wParam裏面。假設純ASCII鍵盤輸入,那麼你可以使用以下命令:

short newKeyCode = (char)wParam; 
if (uMsg == WM_CHAR || uMsg == WM_SYSCHAR) 
if (newKeyCode - 'a' < 26) { 
    newKeyCode = newKeyCode - 'a' + 'A'; 
} else { 
    newKeyCode = newKeyCode - 'A' + 'a'; 
} 

當然,如果你是一個Windows系統上2000年以後(因此在NT架構上運行),wParam中會是一個Unicode值(和UTF-16一樣,所以你的程序可能不得不擺弄這個讓它進入一個很好的狀態,否則這應該是你所需要的。