键盘钩子:更改键码

时间:2011-04-01 14:33:52

标签: c windows keyboard-hook

我确实挂了一些进程的键盘。现在我需要更改发送到流程的密钥消息。

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

我该怎么做?

1 个答案:

答案 0 :(得分: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';
}

当然,如果您使用的是超过2000的Windows系统(因此在NT体系结构上运行),wParam将是一个Unicode值(和UTF-16一样,因为它是Windows惯例),所以你的程序可能有为了使它成为一个好的状态而摆弄它,否则这应该是你所需要的全部。