2012-01-21 121 views
1

我正试图在Qt中创建一个简单的机器人,并需要为此模拟键盘按下的方式外Qt应用程序本身。Qt - C++模拟按键

我已经成功地使这个可以通过使用“旧” keybd_event

keybd_event(Qt::Key_A,0,0, 0); // Pressing the 'A-button" 

和工程出精品。但是当我试图执行一个'全选'命令时,我无法做到这一点,需要一次按下两个按钮。

当我在Google上研究了这个问题时,我被引用到了'SendInput'函数中,并且'This function(keybd_event)'被取代了。改用SendInput。'

现在的问题是,我对windows API知之甚少,特别是在“Qt”的问题上,希望能够指导如何开始。

回答

1

keybd_event实际上并不是Qt函数,而是Windows Api的一部分。

两个keybd_eventSendInput允许您发送事件和释放事件。如果你想发送组合ctrl+A你应该发送的事件如下:

press Ctrl -> press A -> release A -> release Ctrl

如果你想使用keybd_event,你需要随后4次调用它,如果你想使用SendInput,可以使一个4个事件的阵列。

您应该使用keyboard codes from Windows API来模拟键盘事件,而Qt的代码可能与微软的代码一致。

另外你应该明白,这个解决方案与Qt无关,它是Windows指定的。

您刚刚找到所需文档的所有链接,我认为您应该开始研究并询问更具体的问题,如果您有任何问题。