【问题标题】:Send text to non-active window via autohotkey通过自动热键将文本发送到非活动窗口
【发布时间】: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


【解决方案1】:

使用 ControlSendRaw 的第一个参数来指定控件,如下所示: http://lexikos.github.io/v2/docs/commands/ControlSend.htm#Function_Syntax

【讨论】:

  • 那么我需要一个无穷无尽的 word、excel、open office、记事本等控件名称列表。我想让它对每个程序都通用。
猜你喜欢
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多