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

时间:2011-06-20 08:27:25

标签: c# automation ui-automation

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

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

  1. 点击订单
  2. 查看订单详情并点击“完成”
  3. 程序计算的5秒
  4. 确认您要打印标签
  5. 标签打印并且您已完成
  6. 在繁忙的日子里,我们必须通过这个过程超过500个订单,因为此任务因为步骤3而消耗了大量无用的时间。用户必须等待这5秒才能单击“打印”按钮。假设我们有500个订单,那是500次5秒,大概是40分钟。整个发送过程需要2个小时,因此有33%的时间会因人们等待点击按钮而丢失。

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

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

3 个答案:

答案 0 :(得分:5)

我认为你应该研究像AutoItAutoHotkey这样的UI脚本工具,而不是自己编写。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

如果您知道表单句柄,则可以使用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

以上链接是让我开始的链接