如何在不同的程序之间提供和传递输入?

如何在不同的程序之间提供和传递输入?

有很多独立的、有用的程序,它们的源代码尚未公开,其中一些程序可以完美地相互集成!唯一的问题是我不知道如何在 Windows 7 中让不同的程序相互交互。

我了解 C++/C#/XAML;了解如何使用命令行向程序传递启动参数,以及如何制作批处理文件... 但是程序运行后如何非手动地控制它们呢?

我还知道如何处理 Windows 输入,例如鼠标移动或单击,但这仅允许与操作系统直接交互,而不能与当时打开的特定程序交互。
我希望能够在做其他事情的同时将输入传递给各个程序。


这是我正在尝试解决的一个示例问题:

我有一个名为“会员提取器“提取我网站成员的联系信息;尽管该程序只能通过其 GUI 进行控制;并且还没有导出数据的能力。(因此,必须将电子邮件、电话号码等每条信息逐一复制到剪贴板,然后粘贴到新的 “Microsoft Excel”文档)。

一旦信息被复制并以有组织的方式保存,我需要将这些数据逐一导入到多个新的“联系方式“由”生成通用联系人管理器“ 延伸 “Google Chrome 网络浏览器”

  • 当我处理其他事情时,所有这些都需要通过某种可以在后台运行的脚本自动完成。*

如何做呢??


我认为我需要的是多个虚拟剪贴板......但还有什么呢?

答案1

如果你可以手动操作,那么你可以使用宏软件轻松实现自动化。我选择的武器是自动热键, 具体来说AutoHotkey_L

文档

根据您的示例,以下内容将会有用:

例如,您的脚本的逻辑可能看起来像这样*:
*可能存在小错误,但您掌握了要点!

;Note: find Control and Window names using AutoIt3 Window Spy

Name := []
Email := []
;etc...

members = 100

while (members > 0)
{
    Clipboard = 
    ControlSend, MemberExtrControl, ^a^c, MemberExtrWindow
    ClipWait
    Name.Insert(Clipboard)
    
    Clipboard = 
    ControlSend, MemberExtrControl, Tab^a^c, MemberExtrWindow
    Clipwait
    Email.Insert(Clipboard)
    
    ;etc...

    members--   
}

index = 1

Loop % Names.MaxIndex()
{
    name := Name.Remove(index)
    email := Email.Remove(index)
    ;etc...
    
    ControlSend, ContactMgrControl, %name%, ContactMgrWindow
    ControlSend, ContactMgrControl, Tab%email%, ContactMgrWindow
    
    ;etc...
    
    index++
}

相关内容