4

对不起,我不得不以这种迂回的方式描述功能,但我不知道如何最好地实现想要的功能*

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

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

正如winapi标签所暗示的那样,我在这里不关心 Mac。必须在 Win 7 下工作,与 XP/Vista 的兼容性将是一个明确的优势。脚本的其余部分是用 Python3 和 PyQt4 编写的,但如果需要,我也可以编写一些 c 扩展。

PS:任何对标题有更好想法的人都非常欢迎改进它。

*而且我想避免执行问题的简单一半然后要求不可能的事情的陷阱。

4

1 回答 1

4

Use SendInput(). I didn't test this, but it should work:

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 回答