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

keybd_event无效解决方法

2012-07-29 
keybd_event无效这个函数在windows应用程序打开的电脑都是可以用的,但是在window自己的窗口却无效,谁能帮

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~那位大侠来帮帮忙啊!

热点排行