如何得到其他进程中有焦点的ListView中被选中的当前节点的文本?

解决方案 »

  1.   

    procedure GetSelect(const hListView: HWND; const iIndex: Integer);
    var
      hli: TLVItem;
      Buff: PChar;
      PID: THandle;
      PRC: THandle;
      R: Cardinal;
      vBuffer: array[0..255] of Char;
      S:String;
    begin
      GetWindowThreadProcessId(hListView, @PID);
      PRC := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_VM_WRITE, False, PID);
      Buff := VirtualAllocEx(PRC, nil, 4096, MEM_RESERVE or MEM_COMMIT, PAGE_READWRITE);  FillChar(hli, sizeof(hli), 0);
      hli.mask := LVIF_TEXT;
      hli.pszText := PChar(integer(Buff) + SizeOf(hli) * 4);
      hli.cchTextMax := SizeOf(vBuffer);
      WriteProcessMemory(PRC, Buff, @hli, Sizeof(hli), R);
      SendMessage(hListView, LVM_GETITEMTEXT, iIndex, LongInt(Buff));
      ReadProcessMemory(PRC,PChar(integer(Buff) + SizeOf(hli) * 4),@vBuffer[0], SizeOf(vBuffer), R);
      S := S + #9 + vBuffer;  Delete(S, 1, 1);
      form1.Ls.Items.Add(S);
      VirtualFreeEx(PRC, Buff, 0, MEM_RELEASE);
      CloseHandle(PRC);
    end;这是我的,但是只能取到当前第几个项中的值,要取到当前选中项的也不知道该怎么办....关注一下.查资料发现有个ListView_GetSelectedCount函数,不知道有没用...