Autor Beitrag
daPimP
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 54
Erhaltene Danke: 1

Win XP
D6, D7
BeitragVerfasst: Mo 19.04.04 20:43 
Mein Prog arbeitet viel mit fremden Prozessen und deren Fenstern. (ähnlich X-Spy)
Es liest auch fleißig FAST alle Komponenten der Fenster aus.
A B E R:
Ich will ALLE!

Ließt man sein eigenes Programm aus, geht das mit

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
 ListBox1.Items.Add(inttostr(form1.ComponentCount));
 for i:=0 to form1.ComponentCount-1 do
//Bezeichnung der Komponente
  ListBox1.Items.Add(form1.Components[i].Name+
//Komponentenname des Objekts
                           ' -object:'+TObject(form1.Components[i]).ClassName);


:D Ich sehe also auch NONVCL Kompos. :D

Gibt es eine Möglichkeit, diese Komponenten ( wie TTimer, TLabel, TSplitter) auch aus fremden Fenstern mit auszulesen :?:

Als Denkanstoß erinnere ich mich an Programme wie "Form Extractor".
Die geben ja auch Teile der EXE als Quellcode zurück und stellen die Komponenten wieder her....

Moderiert von user profile iconMotzi: Code- durch Delphi-Tags ersetzt

_________________
watch out ... SySSnapper... coming soon
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 19.04.04 20:52 
Komponenten wie TTimer, TLabel etc besitzen keine Fenster-Handles und können daher auch nicht aufgelistet werden.. der Form Extractor funktioniert einfach deshalb, weil die Delphi-Formulare (DFM-Dateien) als Resource in die Exe mit eingelinkt werden. Diese Resourcen kann man nun einfach zB mit einem Programm wie ResourceHacker auslesen und man weiß sofort wie das Formular ausschaut, welche Komponenten darauf sind etc. Das geht aber eben nur bei Programmen die mit Delphi oder dem BCB kompiliert worden sind und die die VCL benutzen...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 19.04.04 20:56 
daPimP hat folgendes geschrieben:
:D Ich sehe also auch NONVCL Kompos. :D

Ist das nicht ein Widerspruch? :roll:
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 19.04.04 21:01 
MathiasSimmack hat folgendes geschrieben:
daPimP hat folgendes geschrieben:
:D Ich sehe also auch NONVCL Kompos. :D

Ist das nicht ein Widerspruch? :roll:

Ich glaub hier verwechselt jemand nonVCL mit non-visual.. ;)

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
daPimP Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 54
Erhaltene Danke: 1

Win XP
D6, D7
BeitragVerfasst: Mo 19.04.04 21:05 
MathiasSimmack hat folgendes geschrieben:


Zitat:
Ist das nicht ein Widerspruch?


Wenn ich den Taskmanager aufrufe, zeigt er mir in der Spalte
GDI Objekte : 193 an

Wenn ich mein eigenes Prog auslese, habe ich 194.

Ist also fast identisch. Ich suche also die Möglichkeit die GDI Objekte auszulesen, denn was Windows kann, muss mein Prog schon lange können! :wink:

Also MUSS ich wohl an die GDIs ran, oder?

_________________
watch out ... SySSnapper... coming soon
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 19.04.04 21:37 
Ich halte es wie Motzi und gehe davon aus, dass du nonVCL mit non-visual verwechselt hast, denn nonVCL-Komponenten kenne ich nicht. ;)
daPimP Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 54
Erhaltene Danke: 1

Win XP
D6, D7
BeitragVerfasst: Mo 19.04.04 21:44 
Nehme alles zurück und behaupte das Gegenteil!


Haben wir die Formalien geklärt, schön!

Aber es geht ja darum, dass es möglich sein MUSS, alle Komponenten fremder Fenster auszulesen!
(Siehe Windows Taskmanager: Spalte GDI-Objekte)

Kann ja nicht sein, dass ich der einzige bin, der sich um solche (un)wichtigen Dinge den Kopf zerbricht!

:wink:

_________________
watch out ... SySSnapper... coming soon
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 19.04.04 21:47 
daPimP hat folgendes geschrieben:
Wenn ich den Taskmanager aufrufe, zeigt er mir in der Spalte
GDI Objekte : 193 an

Wenn ich mein eigenes Prog auslese, habe ich 194.

Ist also fast identisch. Ich suche also die Möglichkeit die GDI Objekte auszulesen, denn was Windows kann, muss mein Prog schon lange können! :wink:

Also MUSS ich wohl an die GDIs ran, oder?

Aber eben nur FAST... die Anzahl der GDI-Objekte eines Progs bekommst du mit der API-Funktion GetGuiResources...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
daPimP Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 54
Erhaltene Danke: 1

Win XP
D6, D7
BeitragVerfasst: Mo 19.04.04 22:25 
OK!

GetGuiResources funzt und ist verarbeitet.

Das Problem bleibt: Weiß denn jemand definitiv, dass ich nicht alle Objekte fremder Fenster auslesen kann.

Das beschäftigt mich jetzt schon ein Jahr. Und sollte ein
    ResourceHacker
da draußen sein, mach dir die Mühe und gib mir einen Anhaltspunk wie ich an die Objektnamen rankomme.
:!:

Thx

_________________
watch out ... SySSnapper... coming soon
NetFalcon
ontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 59

Guitar Player

BeitragVerfasst: Mo 19.04.04 22:54 
Der ResHack liest aber nicht das geöffnete FensterHandle aus...
Falscher Ansatz villeicht, ich mein du redest doch hier vom ausgeführten Fenster und deren Handle or ?
daPimP Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 54
Erhaltene Danke: 1

Win XP
D6, D7
BeitragVerfasst: Mo 19.04.04 23:09 
NetFalcon schrieb:

Zitat:
Falscher Ansatz villeicht, ich mein du redest doch hier vom ausgeführten Fenster und deren Handle or ?


Ja ich arbeite mit Handles und an ausgeführten Fenstern.

Frage: Wie kann ich alle Komponenten (sichtbar, unsichtbar) auslesen?

Ansatz A: Ich kenne den Prozess, die geladenen Fenster, die sichtbaren Komponenten der Fenster

Lösung: Ich suche einen Befehl, der mir ähnlich wie form1.Components[i].Name den Namen jeder Komponente gibt.


Ansatz B: Ich kenne das geöffnete Fenster und seinen Prozess.

Lösung: Öffne die Exe - Datei und lese (wie ResHacker) die einzelnen Formulare aus - geladen oder nicht. Dann lass ich mir zu jedem Fenster die Komponenten anzeigen - aus dem Quellcode.

Da mir zu A nix einfällt und ich weiß, dass B funktioniert, warte ich mal auf input eurerseits.

Oder hat jemand nen C - Ansatz :?:

_________________
watch out ... SySSnapper... coming soon
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 20.04.04 10:37 
Deine Ansätze sind beide falsch und es gibt auch keinen möglichen Ansatz der für alle Programme funktioniert!

1) hat nicht jedes Objekt ein Fenster-Handle und damit kannst du diese Objekte nicht per EnumChildWindows ermitteln. Sowas wie Form1.Components[index] gibt es nicht allgemein gültig! Delphi verwendet eben das Objekt orientierte VCL-Prinzip in dem alle Objekte in einem Array des Owners gespeichert werden. Das gilt aber eben nur für Delphi

2) nicht alle IDEs verwenden dasselbe Prinzip wie Delphi mit seinen DFM-Files die als Resource miteingelinkt werden. Folglich kannst du auch nicht bei allen Programmen die verwendeten Objekte aus der Resource auslesen..!

Du wirst dich wohl oder übel mit den Möglichkeiten zufrieden geben müssen, die dir die WinAPI bietet, wenn dein Programm mit allen anderen Programmen, egal mit welche IDE erstellt und mit welchem Compiler kompiliert, funktionieren soll..!

Edit: ein vergessenes "nicht" kann einem Satz auf einmal eine ganz andere Bedeutung geben... :oops:

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!


Zuletzt bearbeitet von Motzi am Di 20.04.04 23:34, insgesamt 2-mal bearbeitet
daPimP Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 54
Erhaltene Danke: 1

Win XP
D6, D7
BeitragVerfasst: Di 20.04.04 22:32 
Titel: DAS Letzte Wort
Werde mich jetzt in ein Schneckenhaus zurückziehen und warten, bis die API oder wer auch sonst, mir eine Lösung bietet! :lol:

Denn abgeschrieben habe ich den Versuch noch nicht - nur zurückgestellt auf der todo-list!!!

05-2004 watch out for .: SysMaster :.

_________________
watch out ... SySSnapper... coming soon