跨进程获取设置了LVS_OWNERDATA 的SYSLISTVIEW32控件中的数据 跨进程获取设置了LVS_OWNERDATA 的SYSLISTVIEW32控件中的数据 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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; 把数据传进DLL 送别阿日,贡献仅有的17分。 编译过程出错? 急待答案! 怎么让Hint自动显示出来,而不是非要鼠标停在上面一段时间~~~~ 请问怎样在delphi中获取逻技pro 4000摄像头接口? 不要进来 一条sql语句放在query中,不知道要加几个’号! 请问用drawbuttonface画出来的按钮有没有可能随windows视觉样式的改变而自动更改外观 写注释不宜过头 关于Delphi程序源码 报表设计的问题
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;