好的,所以我可能会在这里完全咆哮错误的树,因为我不是最新的Windows编程,但现在这样。
我正在尝试在Visual Studio 2010中的C ++项目中启动模拟按键。
基本上当程序从另一个应用程序接收一个特定的代码字符串时(通过许多if语句进行处理,但是很麻烦但是有效)
我需要它来执行与我在键盘上按下控制键的功能相同的功能。
现在我发现的一些代码就是这个。
keybd_event(VK_LCONTROL,0,0,0);
keybd_event(bKey, 0, 0, 0);
keybd_event(bKey, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_LCONTROL,0,KEYEVENTF_KEYUP,0);
因此bKey是S的相应ASCII代码,它让我无法逃脱,但它仍然与这篇文章无关。
我对它的理解应该做什么
Push Control down
Push S down
Release S
Release Control.
然而它似乎没有这样做,它似乎只是按下并释放S,从而根据当时是否有文本输入,适当或不依赖打印S.
我在这里完全咆哮错误的树吗?我知道如何在Xcode的Objective C中做到这一点,但两者看起来完全不同,我知道它们是不同的系统,但仍然。
有人可以提出解决方案吗?基本上是一种使程序一起命中Control + S的方法(不是一个接一个地一起)。
非常感谢任何帮助。那里似乎有很多相互矛盾的信息。
答案 0 :(得分:2)
请改为尝试:
keybd_event(VK_LCONTROL,MapVirtualKey(VK_LCONTROL,0),0,0);
keybd_event(bKey, MapVirtualKey(bKey,0), 0, 0);
keybd_event(bKey, MapVirtualKey(bKey,0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_LCONTROL,MapVirtualKey(VK_LCONTROL,0),KEYEVENTF_KEYUP,0);