与其他应用程序交互(例如单击按钮)

我正在尝试在工作中自动执行许多重复性任务,这个小问题让我感到难过。

我们正在使用一个应用程序来打印在线订单的标签,过程是这样的。

  1. 点击订单
  2. 查看订单详情并点击“完成”
  3. 5秒的程序计算
  4. 确认您要打印标签
  5. 标签打印,你就完成了

在繁忙的日子里,我们必须通过这个过程超过500个订单,因为此任务因为步骤3而消耗了大量无用的时间。用户必须等待这5秒才能单击“打印”按钮。 假设我们有500个订单,即500次5秒,大约40分钟。 整个发送过程花费2个小时,因此有33%的时间因人们等待点击按钮而丢失。

我正在尝试找到一种自动执行步骤4的方法,以便用户在完成步骤2后可以停止与应用程序交互。

那么有没有办法使用C#从另一个应用程序中单击另一个表单中的按钮? 弹出确认屏幕时,必须触发该事件。 请注意,此确认屏幕不是默认的Windows打印对话框,而是应用程序的一部分,因此不会弄乱首选项。

我认为您应该查看UI脚本工具,如AutoIt和AutoHotkey,而不是编写自己的。

这篇关于CodeProject的文章可能对您有用:

  • 通过将COM对象注入进程来自动化Windows应用程序

如果您知道表单句柄,则可以使用User32 dll单击表单上的按钮。

我使用PInvoke.net来查找方法

为了确定屏幕是否已打开/关闭,您可以创建一个窗口挂钩,在屏幕打开或关闭时触发。 您将需要一个C ++库来执行此操作,因为它在c#中是不可能的,但您只需要创建一个小的C ++程序集,然后从您的c#引用它。 您可以在打开窗口时查看窗口的标题以查看它是否是您想要的窗口,然后您可以获取窗口句柄并查看它何时关闭。

有关如何实现挂钩的一些信息可以在这里找到。

http://www.voidnish.com/Articles/ShowArticle.aspx?code=manipwindows

我曾经使用过的C ++程序集叫做GlobalCBTHook。

这是来自代码项目的另一个链接,它显示了全局窗口挂钩

http://www.codeproject.com/KB/system/WilsonSystemGlobalHooks.aspx

上面的链接让我开始了