键盘挂钩:更改密钥代码

问题描述:

我没有钩住某个进程的键盘。现在我需要更改发送给流程的关键信息。键盘挂钩:更改密钥代码

例如:从小写到大写和相反。

我该怎么做?

+2

什么平台?什么API?任何代码?你尝试过什么,失败了? – ybungalobill 2011-04-01 14:36:30

+3

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

+0

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

假设你的函数原型如下: 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一样,所以你的程序可能不得不摆弄这个让它进入一个很好的状态,否则这应该是你所需要的。