c# - 从 SysListView32 获取项目文本

标签 c# winapi listview sendmessage

我正在尝试通过 C# 从另一个应用程序获取 SysListView32 中的文本。 我可以很好地获取 LVM_GETITEMCOUNTLVM_GETITEMW = 0x1000 + 13 总是返回 -1。我如何通过 C# 获取文本?我是新的。非常感谢!

        ParenthWnd = FindWindow(ParentClass, ParentWindow);
        if (!ParenthWnd.Equals(IntPtr.Zero))
        {
            zWnd = FindWindowEx(ParenthWnd, zWnd, zClass, zWindow);
            if (!zWnd.Equals(IntPtr.Zero))
            {
                int user = SendMessage(zWnd, LVM_GETITEMCOUNT, 0, 0);
            }

最佳答案

您需要更加努力地读写 LVITEM 内存,因为您正在使用另一个进程拥有的控件。因此,您需要在该进程中读写内存。如果不调用 ReadProcessMemoryWriteProcessMemory 等,您将无法执行此操作。

最常引用的相关技术示例是这篇代码项目文章:Stealing Program's Memory .当心 32/64 位问题。

关于c# - 从 SysListView32 获取项目文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7804165/

相关文章:

java - 如何根据 ListView 项点击启动 Activity ?

listview - 在Flutter中清除ListView

c# - 用于完成默认访问器的 Visual Studio 键盘快捷键 {get;放;}

c# - .NET 中非托管线程的异常

c# - Linq lambda 不工作但委托(delegate)不工作

c# - 如何在自托管 (AppSelfHostBase) Servicestack 服务 (RequestStream) 上设置文件大小限制?

c++ - 保护 RPC 服务

winapi - MSG 结构的时间成员采用什么格式?

c++ - 将变量传递给 WIN32 API LPCWSTR?

java - Android - 更改ListView项目的TextStyle