![]() |
Componentfinder / Handlefinder...
Liste der Anhänge anzeigen (Anzahl: 1)
Also nach dem ich vorhin den Post mit dem Transparenten Editor gelesen hab, dacht ich mir so das ich mein Programm eigentlich um diese Funktion erweitern könnte (Fenster transparent machen bzw. Blenden). Außerdem ist das Programm manchmal ganz nützlich um deaktivierte Buttons zu enablen oder um festzustellen welche Componenten in einem Programm verwendet wurden (Componenten die auch nen Handle haben).
Zur Handhabung: Man zieht einfach das Fadenkreuz über eine bestimmtes Fenster uns sieht dann das Handle und kann dementsprechend Aktion für für dieses Handle dann im Programm ausführen. Um die Blendoptionen zu sehen muss einfach nur auf den Button "Alphablend >>" linkoben geklickt werden. Hatte leider keinen besseren Platz mehr dafür... Freu mich über kritiken solange diese Sachlich bleiben (der Part "Regeln" funktioniert nicht wirklich zuverlässig) [Edit] - Das mit den Regeln entfernt - Alphablend ist nur verfügbar wenn es von Windows unterstützt wird (somit auch unter win98 lauffähig) [/Edit] einen Beitrag weiter unten gibts eine neue Version... (keine Erweiterung dieser Version sondern das ganze mit leichten Änderungen und Erweiterungen neu gebaut) |
Re: Componentfinder...
Liste der Anhänge anzeigen (Anzahl: 1)
Wie ich heute festgestellt habe laden tatsächlich einige mein Programm herunter.. Da mir persönlich die Darstellung der Fenster bei der alten Version nicht zusagte hab ich das ganze mal neu gebaut.
Es werden jetzt alle Fenster unterhalb des obersten Parents angezeigt. Wenn man also einen Button localisiert so wird das Parentfenster des Buttons gesucht und dann von diesem Fenster aus die Hierarchy der Handles abgebildet in einer Baumstruktur. Zweck des Programmes ist (da es ja auch im Thread der alten Version läuft) noch der gleiche. |
Re: Componentfinder / Handlefinder...
Ich will dich ja nicht entmutigen aber guck dir das mal an:
![]() |
Re: Componentfinder / Handlefinder...
ach, da ist nix mit entmutigen. Wie geschrieben hab ich mich ja gewundert das es leute gibt die mein programm überhaupt runtergeladen haben (weil es ja programme gibt die das gleiche und noch viel mehr machen).
Ein kleinen Vorteil hat meine neue Version jedoch (ist wohl der einzige *g*). Und das ist das auflisten der Childs. Die Information welche Childs das Fenster hat und wie die Parents angeordnet sind ist manchmal doch recht nützlich wenn man ein Fenster automatich finden lassen will um zum Beispiel ein Prog fernzusteuern. |
Re: Componentfinder / Handlefinder...
Zitat:
Bug: Das "Blinken lassen" lässt bei transparenten Fenstern einen unschönen Ramen zurück. Und so ein Zielicon wäre ja auch noch nett. ;) |
Re: Componentfinder / Handlefinder...
Liste der Anhänge anzeigen (Anzahl: 1)
- Das mit dem Zielicon wurde hinzugefügt
- Desweiteren gibt es jetzt eine Funktion um Quelltext zum finden dieses Fensters zu erzeugen. Ich bin mir ziemlich sicher das in der Beschreibung im Programm einige Rechtschreibfehler sind. Wenn jemand diese lokalisiert -> Bitte melden damit ich diese beseitigen kann (bin nicht besondern gut in Sachen Rechtschreibung). Der Effekt mit dem Blinken ist mir auch bereits aufgefallen. Ist leider nicht nur bei Transparenten fenstern so (Eigentlich führe ich ein "InvalidateRect" aus was das Fenster dazu bewegen soll den Bereich neu zu zeischnen was aber wohl nicht in jedem fall richtig funktioniert) Hinweis für diejenigen die den Quelltext zum wiederfinden des Fensters nutzen wollen: Wenn Ihr Beispielsweise ein Formular sucht dessen Klassenname "TForm1" ist so es nicht sehr ratsam den Quelltext zum suchen von "TForm1" erzeugen zu lassen weil es doch mehrere Anwendungen gibt welche diesen Klassennamen haben. In diesem Fall solltet ihr den Quelltext zum Finden für ein Childwindow des "TForm1" erzeugen lassen (in der Baumansicht ein Child in möglichst tiefer Ebene anklicken (je tiefer die Ebene destso wahrscheinlicher dass, das richtige Fenster gefunden wird)). Dadurch findet ihr zwar dann erstmal das ChildFenster aber die wahrscheinlichkeit ist bedeutend größer das dieses Childfenster eben auf dem gesuchten Form ist. Da Ihr des weiteren wisst dass, das Childfenster zum Beispiel 3 Ebenen unter dem gewünschten TForm1 ist könnt ihr dann durch den Aufruf von "GetParent" an das Handle des gewünschten Forms kommen. (Bildliche Darstellung des ganzen folgt). [Edit] - Funktion zum erzeugen des Quelltext wurde ergänzt (es ganz aufrufe von Funktionen die nicht enthalten waren) - Bild hinzugefügt, wie man das Handle eines Fensters bekommt dessen Hierarchy nicht eindeutig ist [/Edit] |
Re: Componentfinder / Handlefinder...
Na, das ist ja mal was. :thumb: Bei der Version 2 ist wohl das Umranden der Fenster ferloren gegangen oder nicht gewollt ?
|
Re: Componentfinder / Handlefinder...
eher nicht gewollt denn wie bei dem Blinken (in V2) kam es bei der Umrandung (in V1) bei einigen Fenstern zu dem Effekt das einige Ränder nicht wieder entfernt werden.
|
Re: Componentfinder / Handlefinder...
Hm schade, ist doch besser wenn man sieht welches Fenster man gerade unter dem Cursor hat. Manchmal ist es schwer bei einander liegende Fenster genau zu treffen...
|
Re: Componentfinder / Handlefinder...
OK, Selectierung ist wieder wie in der ersten Version vorhanden.
|
Re: Componentfinder / Handlefinder...
Schön wäre noch ein Hook der bei einer Ausgewählen Komponente eine Änderung (beispielsweise der Position) wahrnimmt. Sonst ein sehr schönes Programm.
|
Re: Componentfinder / Handlefinder...
Eine kleine Änderung gibt es noch.
Der Blinkeffekt wurde verbessert (das die Markierung weg geht). Wenn man in der Baumansicht ein/e Fenster/Componente wählt blinkt diese kurz auf. Und wem dieser Blinkeffekt nicht lange genug anhält, der kann den Blinkeffekt durch halten eines Button so lange aufrecht halten bis der Button wieder los gelassen wird. @MisterNiceGuy: Wie meinst du das? Das beim starten der Anwendung wo die Komponente drauf liegt automatisch die Position gesetzt wird? |
Re: Componentfinder / Handlefinder...
Nein ich meine das so, dass sobald du mit dem Cursor ein Handle und somit eine Komponente bekommen hast, du die Änderung dieser Komponente abfängst. War das jetzt verständlicher? :)
Zum Beispiel hast du eine Form und wenn du die verschiebst steht in deinem Programm noch die alten Koordinaten. Es wäre aber schön wen dein Programm mitbekäme, dass sich die Form bewegt hat und gleich die neuen Koordinaten in die Edits einträgt. |
Re: Componentfinder / Handlefinder...
wenn es nur um das updaten der Coordinaten eines Fensters geht sollte auch ein Timer reichen, denn so einem Tool noch eine DLL bei packen ist dann doch etwas übertrieben, aber das mit dem Timer werd ich mal machen...
[Edit] - Programm wurde um diesen Punkt erweitert [/Edit] |
Re: Componentfinder / Handlefinder...
Dann werfe ich noch mal das Programm von Motzi in die Runbde:
![]() |
Re: Componentfinder / Handlefinder...
von dem Prog hab ich schon gehört. Von diesem Programm stammt auch die Idee zum erzeugen von Code zum finden des Fensters. Allerdings fand ich diesen erzeugten Source zu unsicher weil hier davon ausgegangen wird das immer das richtige Fenster gefunden wird. Suche ich zum Beispiel das Handle eines TEdit was auf einem TPanel liegt welches auf einem TForm1 liegt so schlägt die Methode von X-Spy fehl wenn beim ersten FindWindow ein Fenster gefunden wird dessen Klasse TForm1 ist aber wo alles andere nicht zutrifft. Dort fehlt also das weiter geprüft wird wenn das erste Fenster nicht das richtige ist.
Was mir dort gefällt ist der haken den man setzen kann ob man den Windowtext einbeziehen will oder nicht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:30 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