很抱歉,我必须以这种迂回的方式描述功能,但我不知道如何最好地实现所需的功能*
我有一个简单的程序,在按下全局热键时将一些数据放入剪贴板。然后,用户的通常用例是将该文本直接粘贴到Photoshop中的文本字段中。即 - 假设ctrl-x
调用全局热键 - 他们一直在ctrl-x ctrl-v
。显然这是糟糕的设计。
那么什么是基本模拟ctrl-v
事件的最简单方法,以便Photoshop直接粘贴文本而无需额外的按键?
由于winapi
标签暗示我不关心Macs。必须在Win 7下工作,与XP / Vista的兼容性将是一个明确的优势。其余的脚本是使用PyQt4在Python3中编写的,但是如果需要的话我也可以编写一些c扩展名。
*我想避免实现问题的简单一半,然后要求一些不可能的东西。
答案 0 :(得分: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));