有很多独立的、有用的程序,它们的源代码尚未公开,其中一些程序可以完美地相互集成!唯一的问题是我不知道如何在 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++
}