我正在尝试开发可在后台运行的C#应用程序,该应用程序需要检测何时打开,填写了一个随机的第三方应用程序并单击了按钮。
我知道我可以通过流程获取第三方应用程序的一些信息,但是是否可以遍历所有控件并获取其值?
我已经阅读了有关“匿名管道”的内容,但不知道是否可以在这种情况下实现这些管道,以及如何实现。
我的最终目标是在同一应用程序中单击“打印”按钮时获得该应用程序中一个特定文本框的值。第三方应用不是我开发的,因此我只将其作为.exe拥有,但我可以看到它具有文本框,标签和按钮。
答案 0 :(得分:2)
您需要的是进程间通信 有多种方法可以解决您的问题:
1。使用通用数据存储
在单击打印按钮时,您可以在数据库/文件中设置一些标志和文本框文本。另一个应用程序可以轮询以检查是否设置了此标志。
一旦设置,其他应用程序可以从数据库/文件中读取。
2。您可以从另一个应用程序托管一个Net Pipe Binding WCF端点。
如果我必须将数据从一个进程发送到同一台计算机上的另一个进程,我会更喜欢此选项。 您的主要应用程序将具有wcf服务的代理。 Wcf服务将成为需要了解文本框文本的其他应用程序的一部分。
在单击“打印”按钮时,您的主应用程序会将文本框文本发送到此WCF服务。
因为它使用的是命名管道绑定,所以该服务仅在该计算机上可用。
请参考示例from this blog。
也可以有其他方法(例如,托管仅允许从本地主机访问的Web API)。方法的选择取决于程序的高级设计。
希望这会有所帮助