抱歉,我必须以这种回旋方式来描述功能,但是我不知道如何最好地实现所需的功能*

我有一个简单的程序,可以在按下全局热键时将一些数据放入剪贴板。用户通常的用例是直接将文本粘贴到Photoshop中的文本字段中。即-假设ctrl-x调用了全局热键-他们一直在做ctrl-x ctrl-v。显然,这是不好的设计。

那么,最基本的模拟ctrl-v事件的最简单方法是什么,以便Photoshop在无需额外按键的情况下直接粘贴文本?

就像winapi标记所暗示的那样,我不在乎Mac。必须在Win 7下工作,与XP / Vista的兼容性将是绝对的优势。脚本的其余部分是用PyQt4用Python3编写的,但如有必要,我也可以编写一些c扩展名。

PS:每个有更好主意的人都欢迎对标题进行改进。

*而且我想避免陷入将问题简单地减半,然后要求不可能的事情的陷阱。

最佳答案

使用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));

07-27 13:47