读书人

keybd_event无效解决方法

发布时间: 2012-07-29 15:26:14 作者: rapoo

keybd_event无效
这个函数在windows应用程序打开的电脑都是可以用的,但是在window自己的窗口却无效,谁能帮忙看看是什么原因?我调试过,例如按1,他是可以进入到if里面的,但是keybd_event发送得消息好像系统的窗口没有接收到。但是对于windows应用程序来说却能接收到这是什么原因?大侠们来围观吧~帮帮忙
HWND hWnd = ::GetForegroundWindow();
//if(hWnd)
{
HWND hEdit = ::FindWindowEx(hWnd, NULL, 0, NULL);
if(hEdit)
{

CHAR szTmp[2] = {0};
szTmp[0] = inputReport[2];
if((szTmp[0]>=0x4F&&szTmp[0]<=0x52)||szTmp[0]==0x2A)
{
if(inputReport[2]==0x4F)
{

keybd_event(VK_RIGHT,0,0,0);
keybd_event(VK_RIGHT,0,KEYEVENTF_KEYUP,0);

}
else if(inputReport[2]==0x50)
{

keybd_event(VK_LEFT,0,0,0);
keybd_event(VK_LEFT,0,KEYEVENTF_KEYUP,0);
}
else if(inputReport[2]==0x51)
{

keybd_event(VK_DOWN,0,0,0);
keybd_event(VK_DOWN,0,KEYEVENTF_KEYUP,0);
}
else if(inputReport[2]==0x52)
{

keybd_event(VK_UP,0,0,0);
keybd_event(VK_UP,0,KEYEVENTF_KEYUP,0);
}
else if(inputReport[2]==0x2A)
{

keybd_event(VK_BACK,0,0,0);
keybd_event(VK_BACK,0,KEYEVENTF_KEYUP,0);
}

}


[解决办法]
按键键盘消息是由拥有焦点的窗口接收并处理的

window自己的窗口是指什么?
[解决办法]
keybd_event
加个sleep试试
[解决办法]
问题描述清楚一些。
模拟 = 和backspace键可以,其他的就不行?
-
另外VS提供了spy++可以用这个查看你的窗口是否有消息产生。
如果产生了,那么就是你的消息被其他程序屏蔽了,或者没有做消息处理。

探讨

引用:

keybd_event
加个sleep试试

试过了。没用。不知道为什么啊?就只有两个键有用=和back~那位大侠来帮帮忙啊!

读书人网 >C++

热点推荐