c# – 从其他窗口获取ListView项目

我正在做一些关于c#的项目.
我需要从ListView窗口获取我的项目,通过做这样的事情我得到它的句柄
IntPtr par_hWnd = API.FindWindow(null,"Form1");
IntPtr child1 = API.findwindowex(par_hWnd,(IntPtr)0,null,null);

API是我的静态类,有许多来自“user32.dll”的dllimports
我能够获取此ListView中的项目数:

IntPtr count = API.SendMessage(child1,API.LVM_GETITEMCOUNT,0);

现在我需要获取item的文本,但结果必须放在LVITEM Structure中,我不知道如何正确调用SendMessage,以及如何在c#中实现LVITEM.找不到c#的例子.有帮助吗?

解决方法

我找到了WinAPI的C#包装器,似乎可以从任何窗口访问LV的内容.
ManagedWinapi
using ManagedWinapi.Windows;
using System;

namespace TestApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create a SystemWindow object from the HWND of the ListView
            SystemWindow lvWindow = new SystemWindow((IntPtr)0x6d1d38);

            // Create a ListView object from the SystemWindow object
            var lv = SystemListView.FromSystemWindow(lvWindow);

            // Read text from a row
            var text = lv[0].Title;
        }
    }
}

此外,我还分叉mwapi here并尝试添加一些新功能 – 主要集中在着色ListView行,但也添加了一些丢失的p / invokes等.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...