我维护了Vim-R-plugin,直到最后发布的版本,在Windows上,我使用Python将R代码从Vim文本编辑器复制到Windows剪贴板中,然后将其粘贴到R控制台窗口而不提高R控制台窗口。用于将Ctrl + V发送到R控制台的Python代码是:
def CntrlV():
global RConsole
win32api.keybd_event(0x11, 0, 0, 0)
try:
win32api.PostMessage(RConsole, 0x100, 0x56, 0x002F0001)
except:
RConsole = 0
pass
if RConsole:
time.sleep(0.05)
try:
win32api.PostMessage(RConsole, 0x101, 0x56, 0xC02F0001)
except:
pass
win32api.keybd_event(0x11, 0, 2, 0)
在插件的开发版本中,我将大多数用Python编写的代码转移到C库中,以避免使插件依赖于Python。但是,下面的代码(我尝试翻译Python代码)无效:
keybd_event(0x11, 0, 0, 0);
if(!PostMessage(RConsole, 0x100, 0x56, 0x002F0001))
RConsole = NULL;
if(RConsole){
Sleep(0.05);
PostMessage(RConsole, 0x101, 0x56, 0xC02F0001);
}
keybd_event(0x11, 0, 2, 0);
Windows上的哪些C代码可用于将Ctrl + V发送到不在前台的窗口,甚至可以最小化?
答案 0 :(得分:1)
如果您要模拟键盘事件,则只能粘贴到焦点窗口。
您可以在系统窗口中枚举窗口;找到您粘贴的窗口并使用WM_SETTEXT
代替?