PostMessage Ctrl+;不升窗
我维护Vim-R-plugin,在上一次发布版本之前,在Windows上,我一直在使用Python将R代码从Vim文本编辑器复制到Windows剪贴板中,然后将其粘贴到R控制台窗口中,而不打开R控制台窗口。用于将Ctrl+V发送到R控制台的Python代码是:PostMessage Ctrl+;不升窗,c,windows,C,Windows,我维护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(RConsol
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发送到不在前台且甚至可以最小化的窗口?如果要模拟键盘事件,则只能粘贴到聚焦窗口
您可以通过系统窗口枚举窗口;找到要粘贴到的窗口并使用
WM_SETTEXT
我在网上发现了一些评论,说WM_SETTEXT不适用于PostMessage。微软已经改变了系统块应用程序的功能,使其不再执行此类操作。你研究过窗钩程序吗?用Python编写的代码是在Windows XP上开发的,现在仍然可以在Windows 8上运行。我想我不需要钩子过程,因为我不想监视操作系统。我需要从一个应用程序向另一个应用程序发送消息。我想这里提到的一些事情可能会有所帮助