【发布时间】:2010-09-27 08:51:45
【问题描述】:
我需要从 Windows 应用程序中抓取数据以在另一个程序中运行查询。有谁知道我在 .NET 中执行此操作的良好起点?
【问题讨论】:
标签: c# .net screen-scraping
我需要从 Windows 应用程序中抓取数据以在另一个程序中运行查询。有谁知道我在 .NET 中执行此操作的良好起点?
【问题讨论】:
标签: c# .net screen-scraping
您可能想查看WM_GETTEXT message。这可以是used to read text from other windows——它是 Windows API 的一个古老部分,如果您使用 C#,则需要为它 p/invoke。
查看this page 以获取在 C# 中执行此操作的示例。
基本上,您首先通过 FindControlEx() 获取所需窗口的句柄(通过标题)。
其次,您使用 EnumChildWindows() 递归地枚举该窗口上的控件,以查找该窗口的所有子控件以及所有这些子控件的子控件,直到您获得目标窗体的完整映射。
这是来自 Google Answers 的 Theta-ga's excellent explanation 的选定部分:
要获取任何文本框或列表框控件的内容,我们只需要它的窗口句柄即可。如果您已经获得了窗口句柄,请转到说明的第 2 部分。
第 1 部分:获取控制句柄
第 2 部分:读取控件的内容
【讨论】: