ListView_GetItem(List_Handle,objItem) 数据为空?
List_Handle为目标窗口的systemlistview32的句柄
intP := -1;
for intIndex := 0 to ListView_GetItemCount(List_Handle) do begin
intP := ListView_GetNextItem(List_Handle,intP,LVNI_ALL);
if intP <> -1 then begin
objItem.mask := LVIF_PARAM;
objItem.iItem := intP;
objItem.iSubItem := 0;
ListView_GetItem(List_Handle,objItem);
Memo1.Lines.Add(IntToStr(intP));
Memo1.Lines.Add(objItem.pszText);
Memo1.Lines.Add('=====================');
end;
end;
结果如下:
0
=====================
1
=====================
2
=====================
3
=====================
4
=====================
5
=====================
哪位给个介绍原因???
[解决办法]
+1
因为飞鸽传书进程的地址空间跟你的进程的地址空间不一样。比如你的objItem在你的进程的地址是123,
而飞鸽传书的地址为123的地方显然不会是你的objItem!就是说,要操作飞鸽传书的地址空间!
用到的API:
OpenProcess
VirtualAllocEx
WriteProcessMemory
VirtualFreeEx
ReadProcessMemory
CloseHandle
ps:原生控件Edit、Button等由系统自动完成数据拷贝和地址空间的转换,所以无需用上述方法。