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