我正在尝试使用最简单的方法使用另一个.NET应用程序(用c#编写)自动化隐藏的 .NET应用程序。它不是用于测试目的,而是一种满足此应用程序缺乏脚本的方法。
我已经尝试过 white 框架,但它有一个主要问题:它的工作方式。它很慢而且它不能用于隐藏的窗口和控件(就像winAPI那样)。更重要的是,当“点击”白色移动鼠标时,将其目标窗口带到前面,依此类推。
我还在考虑使用user32.dll包装器,因为它处理它的目标的方式是我需要的,但是我已经红了它不能使用.NET应用程序。使用它也是一个问题,因为我的目标应用程序有5个标记为“...”的按钮,并且很难找到我需要的2个按钮。我还想使用控件.NET id(开发人员在设计GUI时为其控件提供的名称)。
顺便说一下,如果有帮助,我的目标应用程序是 MeGUI 。我们做了很多视频编码,这样的工具对我们有很大帮助。我需要隐藏 MeGUI ,因为我是唯一的程序员,其他人使用我的工具不应该看到背景中发生的事情,而不是谈论周围的许多窗口。答案 0 :(得分:2)
您可以从项目中添加对exe的引用,然后创建AppDomain
以运行其main方法。从那里,应该可以将委托排队到其主线程的循环。通过一些反思,您可以让这些代理直接调用点击事件等等。
我从来没有尝试过这种方法,但它应该可行。
答案 1 :(得分:1)
您应该尝试Stephens的想法,而不是编写隐藏的应用程序脚本。 .NET Windows窗体应用程序(EXE)仍然是.NET程序集,这意味着您可以像使用DLL一样使用它,只需添加引用并使用公共类。
如果您仍想尝试编写脚本,请查看“Microsoft UI Automation”API和“System.Windows.Automation”命名空间。
这里的好文章:http://msdn.microsoft.com/en-us/magazine/cc163465.aspx
MSDN文档:http://msdn.microsoft.com/en-us/library/system.windows.automation.aspx