跨进程获取设置了LVS_OWNERDATA 的SYSLISTVIEW32控件中的数据

GZYSM 2015-11-11 01:55:50
跨进程获取设置了LVS_OWNERDATA 的SYSLISTVIEW32控件中的数据
...全文
870 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
云中雁012345 2015-11-18
  • 打赏
  • 举报
回复
看不懂。。。。。。。。
GZYSM 2015-11-12
  • 打赏
  • 举报
回复
求高手帮助解决
GZYSM 2015-11-12
  • 打赏
  • 举报
回复
function ListView_GetItemText_Mz(hListView: HWnd; iItem, iSubItem: Integer; pszText: PChar; cchTextMax: Integer): Integer; var hProcess: THandle; DispInfo: TLVDispInfo; ProcessID, ThreadID: DWORD; vNumberOfBytesRead: Cardinal; vPointer: Pointer; pitem: LPWSTR; vBuffer: array[0..255] of Char; begin DispInfo.hdr.hwndFrom := hListView; DispInfo.hdr.idFrom := GetDlgCtrlID(hListView); DispInfo.hdr.code := LVN_GETDISPINFO; ThreadID := GetWindowThreadProcessId(hListview, @ProcessID); hProcess := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_VM_WRITE or PROCESS_QUERY_INFORMATION, FALSE, ProcessID); pItem := VirtualAllocEx(hProcess, nil, 512, MEM_COMMIT, PAGE_READWRITE); DispInfo.item.mask := LVIF_TEXT; DispInfo.item.iItem := iItem; DispInfo.item.iSubItem := iSubItem; DispInfo.item.pszText := pszText; DispInfo.item.cchTextMax := cchTextMax; DispInfo.item.pszText := Pointer(Cardinal(pItem) + SizeOf(TLVDispInfo)); WriteProcessMemory(hProcess, pItem, @DispInfo, SizeOf(TLVDispInfo), vNumberOfBytesRead); Result := SendMessage(GetParent(hListView), WM_NOTIFY, GetDlgCtrlID(hListView), Integer(@DispInfo)); ReadProcessMemory(hProcess, Pointer(Cardinal(pItem) + SizeOf(TLVDispInfo)), @vBuffer[0], SizeOf(vBuffer), vNumberOfBytesRead); DispInfo.item.pszText := vBuffer; VirtualFreeEx(hProcess, pItem, 0, MEM_RELEASE); end;

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧