2012-01-21 17 views
1

Qtでシンプルなボットを作成しようとしています。そのために、Qtアプリケーションの外でキーボードプレスをシミュレートする方法が必要です。Qt - C++はキー押しをシミュレートします

私は正常に「古い」keybd_event

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

を使用することで、この可能になりましたし、それはうまくうまくいきます。しかし、私はすぐに2つのボタンを押すことが必要な 'すべて選択'コマンドを実行しようとしているときに私はそれを作ることができません。

私はGoogleでこの問題を調査したため、「SendInput」関数には「この関数(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を使用したい場合は、あなたがSendInputを使用したい場合は、あなたが作ることができ、4回、その後、それを呼び出す必要があります4つのイベントの配列。

キーボードイベントをシミュレートするには、keyboard codes from Windows APIを使用する必要があります。一方、QtのコードはMicrosoftのものと一致することがあります。

また、この解決方法はWindowsが指定するQtとは関係がないことを理解しておく必要があります。

あなたが必要とするドキュメントへのリンクがすべて見つかりました。問題がある場合は、それを勉強し始めて具体的な質問をしてください。