![]() |
Auslesen eines treeviews
Hallo,
ich hab mit dem tool WinSpy den handel eines treeviews eines fremdprogramms geholt, gibt es einem öglichkeit diesen treeview auszulesen bzw. die selben werte in einen treeview meiner application zu setzen? MfG - Ghost007 |
Re: Auslesen eines treeviews
Jupp. Siehe dazu meine LuckieDips. Da handelt es sich zwar um den Listiew des Desktops aber mit einem Treeview aus einer anderen Anwendung geht es genauso.
Das Prinzip: Speicher im fremden Prozess mit dem Treeview alloziieren, den Speicherbercih mit den Inhalt der Trieview Strukturen füllen und dann in einer identische Struktur im eigenen Prozessraum kopieren. Siehe dazu VirtuallAllocEx, WriteProcessmemory und ReadProcessMemory. |
Re: Auslesen eines treeviews
hi,
danke luckie für deine antwort ... haste nen link zu dienen luckiedips? MfG - Ghost007 |
Re: Auslesen eines treeviews
kann mir da vll jmd weiterhelfen?
raff das irgendwie gar net ... in der suche finde ich auch nichts zu den obigen begriffen ... hat jemand vielleicht 'n beispiel? MfG - Ghost007 |
Re: Auslesen eines treeviews
![]() |
Re: Auslesen eines treeviews
ja ich habs mir schonma angeschaut aber ich komm damit nicht klar ... ich denk ma das ich diese stelle brauch,oder?
Delphi-Quellcode:
Die is aber recht kompliziert ...
////////////////////////////////////////////////////////////////////////////////
// // GetDesktopListView // Desktop Listview Handle ermitteln // Author: Nico Bendlin function GetDesktopListView: HWND; var Progman: HWND; DefView: HWND; function EnumDefViewProc(Wnd: HWND; out DefView: HWND): BOOL; stdcall; var ClassName: array[0..255] of Char; begin DefView := Wnd; ClassName[0] := #0; GetClassName(Wnd, ClassName, 255); Result := lstrcmp(ClassName, 'SHELLDLL_DefView') <> 0; end; begin Result := HWND(nil); Progman := FindWindow('Progman', nil); if Progman <> HWND(nil) then begin DefView := FindWindowEx(Progman, HWND(nil), 'SHELLDLL_DefView', nil); if DefView <> HWND(nil) then begin if IsActiveDesktopActive then EnumChildWindows(DefView, @EnumDefViewProc, LPARAM(@DefView)); Result := FindWindowEx(DefView, HWND(nil), 'SysListView32', nil); end; end; if Result = HWND(nil) then MessageBox(HWND(nil), PChar(ERROR_GETDESKTOPHANDLE), APPNAME, MB_ICONERROR); end; const ItemBufferBlockSize = $1000; type PLvItemBuffer = ^TLvItemBuffer; TLvItemBuffer = packed record case Integer of 0: ( LvItem32: packed record mask: LongWord; iItem: LongInt; iSubItem: LongInt; state: LongWord; stateMask: LongWord; pszText: LongWord; cchTextMax: LongInt; iImage: LongInt; lParam: LongWord; iIndent: LongInt; iGroupId: LongInt; cColumns: LongWord; puColumns: LongWord end); 1: ( LvItem64: packed record mask: LongWord; iItem: LongInt; iSubItem: LongInt; state: LongWord; stateMask: LongWord; _align1: LongWord; pszText: Int64; cchTextMax: LongInt; iImage: LongInt; lParam: Int64; iIndent: LongInt; iGroupId: LongInt; cColumns: LongWord; _align2: LongWord; puColumns: Int64; end); 2: (LvItemBuff: array[0..ItemBufferBlockSize - 1] of Byte; case Integer of 0: (AnsiText: array[0..ItemBufferBlockSize - 1] of AnsiChar); 1: (WideText: array[0..ItemBufferBlockSize div 2 - 1] of WideChar); 2: (ItemText: array[0..ItemBufferBlockSize div SizeOf(Char) - 1] of Char)); end; type TFNIsWow64Process = function(hProcess: THandle; out Wow64Process: BOOL): BOOL; stdcall; var FNIsWow64Process: TFNIsWow64Process; MfG - Ghost007 |
Re: Auslesen eines treeviews
|
Re: Auslesen eines treeviews
Hi,
danke toms für deinen beitrag, welcher schon viel einfacher aussieht ^^. Aba warscheinlich bin ich einfach zu blöd dafür... Ich will folgendes machen: Die buddylist von ICQ(welche ein treeview ist), deren handel ich so ermittel:
Delphi-Quellcode:
Nun will ich die daten aus dem treeview in meinen eigenen treeview auf meiner form übertragen.
var
wnd: HWND; begin wnd := FindWindow('#32770','283-185-098'); wnd := FindWindowEx(wnd, 0, 'SysTreeView32', nil); if wnd <> 0 then begin // ShowMessage('Window found. Handle: ' + IntToStr(wnd)); writeln('Window found. Handle: ' + IntToStr(wnd)); FlashWindow(wnd); end; end. Wie stell ich das an? MfG - Ghost007 P.S.Danke schon mal für eure Hilfe ... schon länger her das ich was mit delphi gmacht hab, also habt bitte eine wenig nachsicht. |
Re: Auslesen eines treeviews
Wäre es nicht einfacher mit der ICQ-API zu arbeiten?
|
Re: Auslesen eines treeviews
hi luckie,
wennde mir sagst wo ich da was zu finde, oder wie das geht, dann gern ^^ MfG - Ghost007 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz