1

我确实钩住了一些进程的键盘。现在我需要更改发送到进程的关键消息。

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

我怎样才能做到这一点?

4

1 回答 1

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 约定一样),所以您的程序可能不得不摆弄这是为了让它进入一个好的状态,否则这应该是你所需要的。

于 2011-04-09T06:34:18.770 回答