C# 如何从Windows中打开的应用程序中读取值?
我想创建一个程序或使用一个程序从另一个应用程序中读取内存值。有人知道会这样做的应用程序/库吗 目标应用程序是。我想从中读出汇率值 我是一名经验丰富的c程序员,但从未使用过Win32/User32API,我认为要实现这一点,我必须处理这个问题 非常感谢任何能让我走上正确方向的帮助 更新:C# 如何从Windows中打开的应用程序中读取值?,c#,windows,winapi,spy++,C#,Windows,Winapi,Spy++,我想创建一个程序或使用一个程序从另一个应用程序中读取内存值。有人知道会这样做的应用程序/库吗 目标应用程序是。我想从中读出汇率值 我是一名经验丰富的c程序员,但从未使用过Win32/User32API,我认为要实现这一点,我必须处理这个问题 非常感谢任何能让我走上正确方向的帮助 更新: 我设法使用Spy++获得了窗口句柄,因此我确信我可以通过某种方式获得值。通过自动化屏幕截图和ocr过程,可能更容易获取他们的数据。如果这是你的目标 潜在相关链接: 这篇文章可能有帮助,但我认为它不是通用的,对于您
我设法使用Spy++获得了窗口句柄,因此我确信我可以通过某种方式获得值。通过自动化屏幕截图和ocr过程,可能更容易获取他们的数据。如果这是你的目标 潜在相关链接:
这篇文章可能有帮助,但我认为它不是通用的,对于您的任务来说,最好直接访问Forex API/Web服务或尝试在网络上捕获所需的数据。通常,应用程序在对话框中以一致的方式、相同的ID、相同的顺序等创建控件,因此通过编程查找控件相当简单。使用Spy++查找控件的ID,然后可以在应用程序创建的窗口中搜索所需的控件。由于不熟悉所讨论的应用程序,我无法给出具体细节,但是如果Spy++显示了您想要的值,那么在代码中获得该值可能并不困难 显示值的控件类型是什么?一旦有了父窗口句柄和控件ID,您就可以使用来获取该值?要获取父窗口,请尝试使用。是否查看或? 这两个开源选项都具有从应用程序窗口读取文本并向其发送击键或鼠标点击的功能 AutoIT非常易于使用,并且有很好的文档记录。 从窗口读取文本的示例如下:
$text = WinGetText("title of window", "")
MsgBox(0, "Text read was:", $text)
这可以编译成可执行文件。可以筛选使用本机windows控件创建的内容;如果是这样,您应该能够使用Spy++查看控件。但是有些时候控件是手工实现的,并且没有办法将其屏幕废弃。例如,一些Java图形工具包直接使用图形,因此从外部看,每天所做的一切都是毫无意义的,甚至有些Office菜单是在不使用菜单控件的情况下实现的
Windows辅助功能API是筛选值的一种可能方式;检查windows附带的屏幕阅读器“叙述者”是否能够读出您的目标应用程序。虽然此解决方案有点异味,但它可能是具有良好OCR库的最简单解决方案。我无法获得所需的值,但我能够获得所有不同汇率所在容器的句柄。容器中显示的唯一控件是用于选择值批量大小的组合框。使用Spy++时,所有控件是否都显示在同一父项下?我看到的唯一控件是用于选择批量大小的组合框,它们显示在我要读取的数字旁边,但是spy++中没有显示数字控件。在Spy++中,你可以右键点击一个窗口并选择高亮显示,高亮显示所选窗口。如果一次高亮显示组合框的所有同级,是否有任何一个框闪烁包含所需文本的矩形?