如何用键盘钩子给主程序传递变量
答案:3 悬赏:80 手机版
解决时间 2021-01-08 21:06
- 提问者网友:欺烟
- 2021-01-07 20:23
如何用键盘钩子给主程序传递变量
最佳答案
- 五星知识达人网友:大漠
- 2021-01-07 21:47
你这个不就可以了?先自定义消息
然后给主窗口发送自定义消息
然后主窗口得到这个自定义消息就处理呗
然后给主窗口发送自定义消息
然后主窗口得到这个自定义消息就处理呗
全部回答
- 1楼网友:逐風
- 2021-01-07 22:52
你好,希望我的回答对你有帮助!
1.你现在用的是一般键盘钩子。按你的要求,你需要用低级键盘钩子
2.我写了个示例工程(VC6下编译通过)。下载地址:
3.如果你用的是VC6,要用到低级鼠标钩子,需要在stdafx.h里添加#define _WIN32_WINNT 0x0500 //用低级鼠标钩子需要添加这一句
具体看示例工程里的代码
4.以下是部分代码,仅供参考。
(1) 定义变量
HWND g_hWnd=NULL;
HHOOK g_hKeyboard=NULL;
(2)//键盘钩子
LRESULT CALLBACK KeyboardProc(int code,WPARAM wParam, LPARAM lParam)
{
if(code <0)
return CallNextHookEx(g_hKeyboard,code,wParam,lParam);
if(::GetForegroundWindow()==g_hWnd) //判断当前接收按键消息的是此对话框程序
{
if (wParam==WM_KEYDOWN)
{
int t=((KBDLLHOOKSTRUCT *) lParam )->vkCode;
trace(t);
//在这里添加你的按键发出音乐的代码
return 1;
}
else if (wParam==WM_KEYUP)
{
return 1;
}
}
return CallNextHookEx(g_hKeyboard,code,wParam,lParam);
}
(3)初始化
g_hWnd=m_hWnd;
g_hKeyboard=SetWindowsHookEx(WH_KEYBOARD_LL,KeyboardProc,GetModuleHandle(NULL),0);
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
1.你现在用的是一般键盘钩子。按你的要求,你需要用低级键盘钩子
2.我写了个示例工程(VC6下编译通过)。下载地址:
3.如果你用的是VC6,要用到低级鼠标钩子,需要在stdafx.h里添加#define _WIN32_WINNT 0x0500 //用低级鼠标钩子需要添加这一句
具体看示例工程里的代码
4.以下是部分代码,仅供参考。
(1) 定义变量
HWND g_hWnd=NULL;
HHOOK g_hKeyboard=NULL;
(2)//键盘钩子
LRESULT CALLBACK KeyboardProc(int code,WPARAM wParam, LPARAM lParam)
{
if(code <0)
return CallNextHookEx(g_hKeyboard,code,wParam,lParam);
if(::GetForegroundWindow()==g_hWnd) //判断当前接收按键消息的是此对话框程序
{
if (wParam==WM_KEYDOWN)
{
int t=((KBDLLHOOKSTRUCT *) lParam )->vkCode;
trace(t);
//在这里添加你的按键发出音乐的代码
return 1;
}
else if (wParam==WM_KEYUP)
{
return 1;
}
}
return CallNextHookEx(g_hKeyboard,code,wParam,lParam);
}
(3)初始化
g_hWnd=m_hWnd;
g_hKeyboard=SetWindowsHookEx(WH_KEYBOARD_LL,KeyboardProc,GetModuleHandle(NULL),0);
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯