0

我正在开发一个必须从其他应用程序(非托管)捕获数据的 C# 应用程序。

这个另一个应用程序有许多 SysListView32 控件,我必须获取特定 SysListView32 控件的数据,但我唯一可以用来获取此特定控件的是列的标题 (SysHeader32) 文本,它们对于每个 SysListView32 都不同控制。

我从所有 SysListView32 控件中捕获了数据(行和列中的所有文本),但我无法捕获标题列的文本。

任何人都可以帮助我吗?

感谢和抱歉我的英语不好。

4

1 回答 1

2

您将需要向控件发送LVM_GETCOLUMN消息。困难在于消息填充了作为指向该结构的指针传递的结构的内容。但是该指针必须引用在拥有列表视图的进程中分配的内存。在您的方案中,列表视图由不同的进程拥有。

VirtualAlloc您可以通过在其他进程中分配内存来解决此问题。然后,您可以使用 初始化该内存WriteProcessMemory。然后使用 . 在阅读内容之前发送消息ReadProcessMemory。最后,用 解除分配VirtualFree

这是一个非常正确的方法,如果目标进程是不同的位数,它会更加复杂。

看到您对该问题的评论后,很明显您已经熟悉这种技术。

在我看来,使用自动化 API 可能会更好,我相信它会更容易地为您提供信息。

于 2013-07-26T15:12:20.657 回答