c#取外部自绘listview内容SendMessage怎么用
时间: 2023-07-11 19:53:01 浏览: 195
在C#中,使用SendMessage函数获取外部自绘ListView控件的内容,需要先获取ListView控件的句柄,然后通过SendMessage函数发送LVM_GETITEMCOUNT、LVM_GETITEM等消息来获取ListView控件中的数据。
以下是一个示例代码,演示了如何使用SendMessage函数获取ListView控件中的数据:
```csharp
// 获取ListView控件句柄
IntPtr listViewHandle = FindWindow(null, "ListView窗口标题");
// 获取ListView控件中item的数量
int itemCount = (int)SendMessage(listViewHandle, LVM_GETITEMCOUNT, 0, 0);
// 遍历ListView控件中的item,获取每个item的数据
for (int i = 0; i < itemCount; i++)
{
LVITEM lvItem = new LVITEM();
lvItem.mask = LVIF_TEXT;
lvItem.iItem = i;
lvItem.iSubItem = 0;
lvItem.cchTextMax = 256;
lvItem.pszText = Marshal.AllocHGlobal(256);
SendMessage(listViewHandle, LVM_GETITEM, 0, ref lvItem);
string itemText = Marshal.PtrToStringAuto(lvItem.pszText);
// 处理获取到的item数据
// ...
}
```
需要注意的是,以上代码中的LVITEM结构体需要自己定义,可参考ListView控件的文档来进行定义。另外,SendMessage函数的第一个参数为目标窗口的句柄,第二个参数为消息类型,后面的参数为消息所需的参数。
阅读全文