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

ListView_GetItem(List_Handle,objItem) 数据替空

2012-12-29 
ListView_GetItem(List_Handle,objItem) 数据为空?List_Handle为目标窗口的systemlistview32的句柄intP:-

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等由系统自动完成数据拷贝和地址空间的转换,所以无需用上述方法。

热点排行