9

我想创建一个程序或使用一个程序来从另一个应用程序中读取内存值。有谁知道会执行此操作的应用程序/库?

目标应用程序是 this。我想从中读取汇率值。

我是一位经验丰富的 c# 程序员,但从未使用过 Win32/user32 api,我假设我必须处理它才能实现这一目标。

非常感谢任何让我朝着正确方向前进的帮助。

更新: 我设法使用 Spy++ 来获取窗口句柄,所以我确信我可以通过某种方式获取这些值。

4

5 回答 5

3

您是否研究过 AutoITAutoHotKey?这两个开源选项都具有从应用程序窗口读取文本(并将击键或鼠标点击发送给它们)的有据可查的能力。

AutoIT 非常易于使用并且有据可查。从窗口读取文本的示例是:

$text = WinGetText("title of window", "")
MsgBox(0, "Text read was:", $text)

这可以编译成可执行文件。

于 2009-08-03T23:44:04.697 回答
2

通常,应用程序以一致的方式、相同的 ID、相同的顺序等在对话框中创建控件,因此以编程方式查找控件相当简单。使用Spy++查找控件的 ID,然后您可以在应用程序创建的窗口中搜索所需的控件。不熟悉有问题的应用程序我不能给出细节,但如果Spy++显示你想要的值,那么在你的代码中获取值可能并不难。

值显示在什么类型的控件中?一旦您拥有父窗口句柄和控件 ID,您就可以使用GetDlgItemText来获取值?要获取父窗口,请尝试使用EnumWindows

于 2009-08-03T23:41:05.327 回答
1

通过自动截图然后 ocr 处理可能更容易抓取他们的数据。如果那是你的目标。

潜在相关链接:

于 2009-08-03T05:14:23.623 回答
0

可以截取使用本机 Windows 控件创建的内容;如果是这种情况,您应该能够看到使用 Spy++ 的控件。但有时控件是“手动”实现的,没有办法将它们截屏(例如,一些 Java 图形工具包直接玩图形,所以每天所做的一切从外面看都是没有意义的,甚至某些 Office 菜单是实现的不使用菜单控件)。

Windows 可访问性 API 是屏幕报废值的一种可能方式;检查 Windows 附带的屏幕阅读器“讲述人”是否能够朗读您的目标应用程序。

于 2009-12-28T15:00:44.657 回答
0

这篇文章可能会有所帮助 - http://msdn.microsoft.com/en-us/magazine/cc163617.aspx,但我认为它不是通用的,对于您的任务来说最好直接访问外汇 API/Web-Service 或尝试在网络上捕获所需的数据。

于 2009-08-03T07:19:27.487 回答