Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Вниз

получение данных из чужого TListView   Найти похожие ветки 

 
landy   (2004-10-29 18:49) [0]

Как можно получить данные из чужого объекта ListView в чужом окне? Хендл самого окна я знаю, как получить, через FindWindowEx, а как добраться до данных, которые лежат в колонках ListView?


 
VMcL ©   (2004-10-29 19:03) [1]

>>landy  (29.10.04 18:49)

Внедриться в нужный процесс с помощью SetWindowsHookEx или CreateRemoteThread, например.


 
VMcL ©   (2004-10-29 19:05) [2]

P.S. Почитать от том, как это сделать, можно здесь:
http://podgoretsky.com/ftp/Docs/Classics/Richter/


 
landy   (2004-11-01 16:48) [3]

Отыскал вот такой код одного китайского товарища, который делает все, что мне нужно. Просветился. :)

http://dev.csdn.net/Develop/article/26/26046.shtm

(*//
±кМв:»сИЎЖдЛыЅшіМЦРListViewµДОД±ѕ
ЛµГч:Window2000+Delphi6µчКФНЁ№э
ЙијЖ:Zswang
Ц§іЦ:wjhu111@21cn.com
ИХЖЪ:2004-03-25
//*)

uses CommCtrl;

function ListViewColumnCount(mHandle: THandle): Integer;
begin
 Result := Header_GetItemCount(ListView_GetHeader(mHandle));
end; { ListViewColumnCount }

function GetListViewText(mHandle: THandle; mStrings: TStrings): Boolean;
var
 vColumnCount: Integer;
 vItemCount: Integer;
 I, J: Integer;
 vBuffer: array[0..255] of Char;
 vProcessId: DWORD;
 vProcess: THandle;
 vPointer: Pointer;
 vNumberOfBytesRead: Cardinal;
 S: string;
 vItem: TLVItem;
begin
 Result := False;
 if not Assigned(mStrings) then Exit;
 vColumnCount := ListViewColumnCount(mHandle);
 if vColumnCount <= 0 then Exit;
 vItemCount := ListView_GetItemCount(mHandle);
 GetWindowThreadProcessId(mHandle, @vProcessId);
 vProcess := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or
   PROCESS_VM_WRITE, False, vProcessId);
 vPointer := VirtualAllocEx(vProcess, nil, 4096, MEM_RESERVE or MEM_COMMIT,
   PAGE_READWRITE);
 mStrings.BeginUpdate;
 try
   mStrings.Clear;
   for I := 0 to vItemCount - 1 do begin
     S := "";
     for J := 0 to vColumnCount - 1 do begin
       with vItem do begin
         mask := LVIF_TEXT;
         iItem := I;
         iSubItem := J;
         cchTextMax := SizeOf(vBuffer);
         pszText := Pointer(Cardinal(vPointer) + SizeOf(TLVItem));
       end;
       WriteProcessMemory(vProcess, vPointer, @vItem,
         SizeOf(TLVItem), vNumberOfBytesRead);
       SendMessage(mHandle, LVM_GETITEM, I, lparam(vPointer));
       ReadProcessMemory(vProcess, Pointer(Cardinal(vPointer) + SizeOf(TLVItem)),
         @vBuffer[0], SizeOf(vBuffer), vNumberOfBytesRead);
       S := S + #9 + vBuffer;
     end;
     Delete(S, 1, 1);
     mStrings.Add(S);
   end;
 finally
   VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE);
   CloseHandle(vProcess);
   mStrings.EndUpdate;
 end;
 Result := True;
end; { GetListViewText }

//Example
procedure TForm1.FormCreate(Sender: TObject);
begin
 RegisterHotKey(Handle, 1, MOD_WIN, VK_F2);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 UnRegisterHotKey(Handle, 1);
end;

procedure TForm1.WMHOTKEY(var Msg: TWMHOTKEY);
begin
 case Msg.HotKey of
   1:
     GetListViewText(
       WindowFromPoint(Point(Mouse.CursorPos.X, Mouse.CursorPos.Y)),
       MemoText.Lines);
 end;
end;



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.064 c
11-1084189550
Yustas
2004-05-10 15:45
2004.12.19
Иконка приложения


1-1102418056
Destroyer2
2004-12-07 14:14
2004.12.19
Отключение ловушки


1-1102086014
Vega
2004-12-03 18:00
2004.12.19
отображение HTM


14-1101983939
_}|{yk_
2004-12-02 13:38
2004.12.19
Вопрос из Что? Где? Когда?


9-1092904623
mr_black
2004-08-19 12:37
2004.12.19
Кратчайший путь от т.А к т.Б





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский