![]() |
Re: X-Spy
Hi motzi
Habe gerade ein kleines Problem beim "Create FindWindow-Code" entdeckt. Wenn der Titel/Text ein ' enthält, wird der FindWindow Code nicht richtig erstellt. Es müsste also 2 '' haben. Zitat:
Beim Starten kommmt folgende Meldung: Zitat:
mfg |
Re: X-Spy
Zitat:
Zitat:
Als Admin solltest du aber das Debug-Privilege haben, aber falls du eben nicht mit dem Admin-Konto arbeitest kannst du über die Lokale Sicherheitsrichtlinie einstellen welche User das Debug-Privileg haben. Das "Problem" mit dem Debug-Privilege wird aber irgendwann (in wahrscheinlich etwas fernerer Zukunft) ein Ende haben, da ich schon seit längerem ein neues Konzept plane, die Umsetzung wird nur leider doch noch etwas länger dauern..! |
Re: X-Spy
Zitat:
Dennoch sollte jetzt die "No Debug-Privilege" Meldung nicht bei jedem Start kommen, denn nach der 1. Meldung weiss man's... :wink: Habe noch einen weiteren Fehler im FindWindow Code gefunden: Fensterstruktur:
Delphi-Quellcode:
Generierter FindWindow Code von XSpy:
1770508: TAppBuilder "Delphi 6 - Project1"
1967222: TControlBar 1311916: TDockToolBar "Standard"
Delphi-Quellcode:
TDockToolBar wird nicht gefunden, warum?
var
wnd: HWND; begin wnd := FindWindow('TAppBuilder', 'Delphi 6 - Project1'); wnd := FindWindowEx(wnd, 0, 'TControlBar', nil); wnd := FindWindowEx(wnd, 0, 'TDockToolBar', 'Standard'); if wnd <> 0 then begin end; end; Die Antwort auf die Frage überlasse ich dir... |
Re: X-Spy
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
PS: ich hab mal geschaut was dein WinSpy für einen Code für genau dieses Fenster produziert... der generierte Code findet zwar ein Fenster, aber das falsche..! ;) Das gesuchte Fenster hat ChildNr 6 statt 5...
function XSpy_FindWindowEx(WndParent: HWND; WndChildAfter: HWND;
lpszClass: PChar; lpszWindow: PChar): HWND; type TEnumWndRec = record lpszClass: PChar; lpszWindow: PChar; Wnd: HWND; WndParent: HWND; WndChildAfter: HWND; bChildFound: Boolean; end; var aEnumWndRec: TEnumWndRec; function GetClassName(Wnd: HWND): String; var szBuffer: array [0..255] of Char; begin ZeroMemory(@szBuffer, SizeOf(szBuffer)); Windows.GetClassName(Wnd, szBuffer, SizeOf(szBuffer)); Result := String(szBuffer); end; function GetWindowText(Wnd: HWND): String; var dwResult: DWord; pBuffer: PChar; begin dwResult := SendMessage(Wnd, WM_GETTEXTLENGTH, 0, 0) + 1; pBuffer := GetMemory(dwResult); try SendMessage(Wnd, WM_GETTEXT, dwResult, Integer(pBuffer)); Result := String(pBuffer); finally FreeMemory(pBuffer); end; end; function EnumCallBack(Window: HWND; var aRec: TEnumWndRec): Boolean; stdcall; var bMatches: Boolean; begin Result := True; if (aRec.WndParent <> 0) and (aRec.WndParent <> GetAncestor(Window, GA_PARENT)) then Exit; if (aRec.WndChildAfter <> 0) and not aRec.bChildFound then begin aRec.bChildFound := aRec.WndChildAfter = Window; Exit; end; bMatches := True; if Assigned(aRec.lpszClass) then bMatches := String(aRec.lpszClass) = GetClassName(Window); if bMatches and Assigned(aRec.lpszWindow) then bMatches := String(aRec.lpszWindow) = GetWindowText(Window); if bMatches then begin aRec.Wnd := Window; Result := False; end; end; begin Result := 0; if (WndParent <> 0) and not IsWindow(WndParent) then Exit; aEnumWndRec.lpszClass := lpszClass; aEnumWndRec.lpszWindow := lpszWindow; aEnumWndRec.Wnd := 0; aEnumWndRec.WndParent := WndParent; aEnumWndRec.WndChildAfter := WndChildAfter; aEnumWndRec.bChildFound := False; if WndParent = 0 then EnumWindows(@EnumCallBack, Integer(@aEnumWndRec)) else EnumChildWindows(WndParent, @EnumCallBack, Integer(@aEnumWndRec)); Result := aEnumWndRec.Wnd; end; |
Re: X-Spy
Zitat:
Zitat:
Childfenster in einem anderen Prozess (ausser explorer.exe) sucht. Grund: FindWindowEx vergleicht bei Angabge von lpszWindow die Übereinstimmung des FensterNamens (lpszWindow) mittels GetWindowText, welche aber nicht zuverlässig ChildFenster Text in einem anderen Prozess ermitteln kann Zu deiner "XSpy_FindWindowEx" Funktion: Funktioniert so wohl sicher aber es man könnte es auch nur mit FindWindowEx() lösen, dann wäre der Source Code nur ein paar Zeilen lang. |
Re: X-Spy
Zitat:
Zitat:
|
Neue Release v0.6.5.215
Neue Release v0.6.5.215
Änderungen:
![]() Und nachdem mehrmals die Frage aufgetaucht ist - Was ist X-Spy - hier jetzt mal eine Erklärung ;) X-Spy ist ein Projekt, das sich zum Ziel gesetzt hat, die Programme Spy++ [Microsoft] und Winsight [Borland] in Möglichkeiten und Detailreichtum noch zu übertreffen! Für alle die diese beiden Programme nicht kennen - mit ihnen ist es möglich alle Fenster des Systems hierachisch mitsamt ihren Child-Fenstern aufzulisten und umfangreiche Informationen wie Handle, Text, Klassenname, etc. jedes einzelnen Fensters zu bekommen. Weiters kann man mit dem X-Spy alle Prozesse mit ihren abgespalteten Threads und den darin erzeugten Fenstern auflisten. Ebenso gibt es eine reine Thread-Liste, eine Modul-Liste mit allen im System geladenen Modulen und eine Service-Liste. Zu jedem Objekt-Art (Fenster, Prozess, Thread, Modul, Service) kann man sich umfangreiche Informationen anzeigen lassen - man erhält also einen recht guten Überblick was sich im System so alles tut. Und für alle die gerne fremde Steuerelemente manipulieren kann man sich für jedes beliebige Fenster den FindWindow-Code generieren lassen (dieses Feature ist leider noch nicht 100%ig ausgereift). :) Bitte um Feedback!! :) |
Re: X-Spy
*push*
Kommt schon Leute, gibt es denn wirklich keinen den das Prog interessiert? :? Auch Leute die von älteren verbuggten Versionen entsetzt waren könnten sich ruhig mal an die neue Version rantrauen - es hat sich einiges getan..! Ich will doch nur ein bisschen Feedback - ihr seid doch sicher auch froh wenn sich jemand eure Progs anschaut! |
Re: X-Spy
also ich fand die Alte Version schon nicht schlecht, ich guck mir mal die neue an jetz :)
:coder2: |
Re: X-Spy
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Motzi,
hab mir die Version mal angeschaut und habe 2 kleine Bugs gefunden ;)
Ansonsten wirklich ein super Programm :thumb: mfG mirage228 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:37 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