专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > WinCE

请问wince键盘钩子的有关问题

发布时间:2010-06-13 22:23:17 文章来源:www.iduyao.cn 采编人员:星星草
请教wince键盘钩子的问题
系统平台:wince
开发语言:evc4.0
程序功能:编写键盘钩子,截取VK_UP消息,运行程序FDS.exe

问题:
点击键盘的向上按钮,可以运行FDS。exe程序,但是是弹出两个FDS.exe,比较头疼,没有找到解决的办法,过来请教一下。


键盘钩子的回调函数为:
LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam) 
{
if (nCode == HC_ACTION)
{
if (((KBDLLHOOKSTRUCT*)lParam)->vkCode == VK_UP )
{
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = TEXT("\\SDMEM\\FDS.exe");
ShExecInfo.lpParameters = NULL;
ShExecInfo.lpDirectory = 0;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
}
}
return 1;




大家看看是什么问题?

------解决方案--------------------
加个约束条件
if(wParam == WM_SYSKEYUP)
{
//ShellExecuteEx(&ShExecInfo);
}

键盘抬起时,会触发两次,wParam可能为WM_SYSKEYUP也可能WM_KEYUP
------解决方案--------------------
保证FDS.exe只有一个实例就行了。具体实现方法google一下有很多
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: