【发布时间】:2015-07-27 12:26:52
【问题描述】:
对于我的项目,我需要一个将文本或电子表格数据导出到其他程序(如 word、excel、记事本等)的程序。 用户将光标设置在要导出到的应用程序中,然后在我的程序中单击“导出”,这将启动 autohotkey .exe。我已经想出了如何获取其他应用程序的窗口,但不知道如何发送数据。
这是当前代码:
WinGet, id, list
window_id := id3 ;id2 = current program, id3 = program behind (we want to send the data here)
ControlSendRaw, , MyExportDataHere, ahk_id %window_id% ;<-------- DOESNT WORK
;~ ///////////// Works, but ugly because of popup:
;~ window_id := id3
;~ WinActivate, ahk_id %window_id%
;~ SendRaw MyExportDataHere
;~ window_id := id2
;~ WinActivate, ahk_id %window_id%
【问题讨论】:
-
controlsendraw实际上应该与您注释掉的代码一样好。我找不到任何错误 -
经过一些测试,我发现它适用于记事本和excel,但不适用于firefox、chrome、notepad++、word和internet explorer。
-
告诉我们更多关于工作流程的信息。我有兴趣知道为什么,例如您似乎想避免激活目标应用程序。另一种方法可能是首先从源应用程序收集所有数据(在一个数组中),然后仅在最后切换到目标应用程序,在此您将数组逐步清空到目标应用程序。
-
它应该作为“数据快照”工作。用户希望主要集中在主程序上。您建议的解决方法很有意义,但我需要始终运行“数据收集器”程序,轮询当前活动窗口并在它更改时粘贴。我可以以某种方式调试 ControlSend 方法吗?或者有没有办法获得非活动窗口的光标焦点(控件类)?
标签: export autohotkey