从SysHeader32获取列的标题文本

本文关键字:标题 文本 SysHeader32 获取 | 更新日期: 2023-09-27 18:25:00

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

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

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

有人能帮我吗?

谢谢并为我糟糕的英语感到抱歉。

从SysHeader32获取列的标题文本

您需要向控件发送一条LVM_GETCOLUMN消息。困难在于消息填充了作为指向结构的指针传递的结构的内容。但该指针必须指向在拥有列表视图的进程中分配的内存。在您的场景中,列表视图由另一个进程拥有。

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

这是一个很难做到的问题,如果目标过程是不同的,那就更复杂了。

看到你对这个问题的评论后,很明显你已经熟悉了这个技巧。

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