4

申し訳ありませんが、このような回りくどい方法で機能を説明する必要がありますが、必要な機能を最適に実装する方法がわかりません*。

グローバルホットキーが押されたときにクリップボードにデータを入れる簡単なプログラムがあります。ユーザーの通常の使用例は、そのテキストをPhotoshopのテキストフィールドに直接貼り付けることです。つまり、グローバルホットキーを呼び出すと仮定ctrl-xすると、常に実行していctrl-x ctrl-vます。明らかにそれは悪いデザインです。

ctrl-vでは、Photoshopが追加のキーを押さなくてもテキストを直接貼り付けることができるように、基本的にイベントをシミュレートする最も簡単な方法は何でしょうか。

タグが示すように、winapiここではMacは気にしません。Win 7で動作する必要があり、XP/Vistaとの互換性は間違いなくプラスになります。スクリプトの残りの部分はPyQt4を使用してPython3で記述されていますが、必要に応じてc拡張機能を記述することもできます。

PS:タイトルに関してより良いアイデアを持っている人は誰でも、それを改善することを歓迎します。

*そして、問題の単純な半分を実装してから、不可能なことを要求するという罠を避けたいと思います。

4

1 に答える 1

4

を使用しSendInput()ます。私はこれをテストしませんでしたが、動作するはずです:

INPUT ctrlV [4];
ZeroMemory(ctrlv, sizeof ctrlV);

ctrlV [0].type = INPUT_KEYBOARD;
ctrlV [0].ki.wVk = VK_LCONTROL;

ctrlV [1].type = INPUT_KEYBOARD;
ctrlV [1].ki.wVk = 'V'; //assuming ASCII

ctrlV [2].type = INPUT_KEYBOARD;
ctrlV [2].ki.wVk = 'V'; //assuming ASCII
ctrlV [2].ki.dwFlags = KEYEVENTF_KEYUP;

ctrlV [3].type = INPUT_KEYBOARD;
ctrlV [3].ki.wVk = VK_LCONTROL;
ctrlV [3].ki.dwFlags = KEYEVENTF_KEYUP;

SendInput (4, ctrlV, sizeof (INPUT));
于 2012-05-11T16:46:29.090 に答える