我需要从Windows应用程序中抓取数据以在另一个程序中运行查询。有谁知道我在.NET中这样做的好起点?
答案 0 :(得分:16)
您可能需要查看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部分:阅读控件的内容
答案 1 :(得分:8)
查看ManagedSpy,提供源代码。 (link)
答案 2 :(得分:0)
“您可以使用System.Diagnostics.Process.GetProcessesByName(”ProcName“)和 检索主窗口句柄,从那里你可以使用win32 API 获取用于显示所需文本的文本框的句柄。 使用文本框的句柄,您可以获取或设置内容。我是 没有与win32 API的高手,但我已经能够进行一些研究 完成类似的任务。 希望这有助于“
从这里采取:http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework/topic1657.aspx
答案 3 :(得分:0)
将The Wheel编成一篇关于他如何从扑克申请中获取信息的文章。
检查:deconstructing-the-poker-client-1。这可能会有所帮助。
答案 4 :(得分:0)
screenscraperstudio.com
它创建了“你的刮刀对话框”的VB代码。
我还没有购买它,所以我可能是错的,但它是唯一的方法(没有使用Spy ++消息传递你自己的其他躲到上面......)