首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

如若使用API函数向已知句柄的LISTVIEW复制数据出来

2012-12-17 
如果使用API函数向已知句柄的LISTVIEW复制数据出来已经一个LISTVIEW控件的句柄,要怎么样复制里面的数据出

如果使用API函数向已知句柄的LISTVIEW复制数据出来
已经一个LISTVIEW控件的句柄,

要怎么样复制里面的数据出来,
此功能主要是做一个小软件的外挂,复制出来后自动保存

我手上没分了,希望大家可以帮这个忙,谢谢,
[解决办法]
lvSelected   =   SendMessage(hWndlistView,   &H1000&   +   66&,   0,   ByVal   0&)   '获取列表的选定项索引

刚才找到的,大家一起论坛一下。
[解决办法]
大家一起论坛一下
[解决办法]
Public Function GetItemTextByProcess$(ByVal Hwnd As Long, ByVal PIDs As Long, ByVal Index As Long, ByVal SubIndex As Long)
Dim Handle&, Memory&(1), Item As LVITEM2, Temp() As Byte, Buffer(260) As Byte
Handle = OpenProcess(2035711, 0, PIDs)
If Handle = 0 Then Exit Function
Memory(0) = VirtualAllocEx(Handle, 0, 260, 4096, 4)
With Item
.iSubItem = SubIndex
.TextSize = 260
.Text = Memory(0)
End With
ReDim Temp(LenB(Item))
Memory(1) = VirtualAllocEx(Handle, 0, LenB(Item), 4096, 4)
WriteProcessMemory Handle, Memory(1), Item, LenB(Item), 0
If SendMessage(Hwnd, 4141, Index, Memory(1)) > 0 Then
ReadProcessMemory Handle, Memory(1), Temp(0), LenB(Item), 0
CopyMemory LenB(Item), VarPtr(Item), VarPtr(Temp(0))
If Item.Text > 0 Then
ReadProcessMemory Handle, Item.Text, Buffer(0), 260, 0
GetItemTextByProcess = StrConv(Buffer, vbUnicode)
GetItemTextByProcess = Left(GetItemTextByProcess, InStr(1, GetItemTextByProcess, vbNullChar) - 1)
End If
End If
VirtualFreeEx Handle, Memory(0), 0, 32768
VirtualFreeEx Handle, Memory(1), 0, 32768
CloseHandle Handle
End Function
[解决办法]
对了,LVITEM结构体的Text As String要改为As Long,因为是指向别的进程的内存地址指针。。。
[解决办法]
怎么样用法
[解决办法]
我也遇到了,但是还没解决。好麻烦,别人用c++写的一个程序。获取到了他一个列表的句柄,但是列表内部的数据无法提取出来。

热点排行