首页 > 解决方案 > 从 C# 中的 3rd 方应用程序获取文本框值

问题描述

我正在尝试开发一个后台工作的 C# 应用程序,它需要检测何时打开、填写随机的第 3 方应用程序并单击按钮。

我知道我可以作为一个流程获得第 3 方应用程序的一些信息,但是是否可以遍历它的所有控件并获取它们的值?

我读过一些关于“匿名管道”的文章,但不知道这些是否可以在这样的案例中实现,以及如何实现。

我的最终目标是在同一个应用程序中单击“打印”按钮时获取应用程序中一个特定文本框的值。第三方应用程序不是我开发的,所以我只有一个 .exe,但我可以看到它有文本框、标签和按钮。

标签: c#winformstextboxanonymous-pipes

解决方案


您需要的是进程间通信有多种方法可以解决您的问题:

1.使用通用数据存储

单击打印按钮后,您可以在数据库/文件中设置一些标志和文本框文本。其他应用程序可以轮询以检查是否设置了此标志。

一旦设置好,其他应用程序就可以从数据库/文件中读取它。

2. 您可以拥有从其他应用程序托管的 Net Pipe Binding WCF 端点。

如果我必须将数据从一个进程发送到同一台机器上的另一个进程,我会更喜欢这个选项。
您的主要应用程序将具有 wcf 服务的代理。Wcf 服务将成为其他需要知道文本框文本的应用程序的一部分。

单击“打印”按钮后,您的主应用程序会将文本框文本发送到此 WCF 服务。

因为这是使用命名管道绑定,所以该服务只能从该机器获得。

请参阅此博客中的示例。

也可以有其他方式(例如,托管 web api,它只允许从 localhost 访问)。方法的选择取决于程序的高级设计。

希望这可以帮助


推荐阅读