抱歉,我必须以这种回旋方式来描述功能,但是我不知道如何最好地实现所需的功能*
我有一个简单的程序,可以在按下全局热键时将一些数据放入剪贴板。用户通常的用例是直接将文本粘贴到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));