Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 键盘挂钩:更改键代码_C_Windows_Keyboard Hook - Fatal编程技术网

C 键盘挂钩:更改键代码

C 键盘挂钩:更改键代码,c,windows,keyboard-hook,C,Windows,Keyboard Hook,我确实钩住了某个进程的键盘。现在我需要更改发送到进程的关键消息 例如:从小写到大写和相反 我如何才能做到这一点?假设您的函数原型如下所示: LRESULT回调WndProc(HWND HWND,UING uMsg,WPARAM WPARAM,LPARAM LPARAM), 你的信的价值在wParam中。假设使用纯ASCII键盘输入,则可以使用以下选项: short newKeyCode = (char)wParam; if (uMsg == WM_CHAR || uMsg == WM_SYSCH

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

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


我如何才能做到这一点?

假设您的函数原型如下所示:
LRESULT回调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';
}
short newKeyCode=(char)wParam;
if(uMsg==WM|u CHAR | uMsg==WM_SYSCHAR)
if(newKeyCode-'a'<26){
newKeyCode=newKeyCode-'a'+'a';
}否则{
newKeyCode=newKeyCode-'A'+'A';
}

当然,如果您在2000年以后的Windows系统上(因此在NT体系结构上运行),wParam将是一个Unicode值(以及UTF-16,这是Windows的惯例),因此您的程序可能必须处理它才能使其进入良好状态,否则这应该是您所需要的全部。

什么平台?什么API?有密码吗?你尝试了什么但失败了?明年还有一个愚人节:)平台窗口。还有API窗口。我在C.写的不是C++