首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

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

2012-02-22 
请教wince键盘钩子的问题系统平台:wince开发语言:evc4.0程序功能:编写键盘钩子,截取VK_UP消息,运行程序FDS

请教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一下有很多

热点排行