Zitat von
APP:
@Chewie,
ich muß gestehen ich verstehe nicht alles was Du mir sagen möchtest,
Kann sein. Ich auch nicht
Also: Jede
PE-Datei, sei es
DLL, EXE oder was auch immer stellt ein Modul dar. Wenn nun ein Excel-Dokument im Internet Explorer geladen wird, wird (vermute ich mal) höchstwahrscheinlich eine
DLL als Plugin geladen. Diese
DLL kann man nun folgendermaßen finden (vorausgesetz, man kennt ihren Namen):
1. Mit CreateToolHelp32SnapShot einen Snapshot der Prozesse machen.
2. Jetzt kann man alle IE-Prozesse erkennen
3. Erneut mit CreateToolHelp32SnapShot einen Snapshot der Module jedes oben gefundenen Prozesses machen (Stichwort: Module32First bzw. Module32Next)
4. Jetzt kann man prüfen, welche Prozesse die entsprechende
DLL geladen haben.
Achtung: Diese Methode ist recht rechenaufwändig und außerdem beruht sie auf der Annahme, bei der Darstelung von Excel-Doks im IE würde ein Modul geladen. Falls das nicht der Fall ist, kann man obiges ganz in die Mülltonne treten.
Außerdem ist man hier noch nicht fertig. Man muss noch aus der Prozess-ID das
Handle des Hauptfensters finden, was über EnumThreads des Prozesses und EnumThreadWindows aller Threads des Prozesses geht.
Alles in allem ein sehr komplizierter Weg, wenn er denn überhaupt funktioniert. Wahrscheinlich gibt es einen einfacheren weg, vielleicht mit Benutzung der Excel-
OLE-Objekte.
Edit:
Zitat von
APP:
nunja ich bekomme nun die PID's (?) des Programmes das ich zuvor mit vollem Pfad an GetThreadID übergeben habe.
Nicht ganz. Du bekommst alle
Thread-IDs des Prozesses, den du mit vollem Pfad an die Funktion übergeben hast.
Allerdings fällt mir gerade auf, dass das nur sinnvoll ist, wenn nur eine Instanz des Programms läuft, da nur die Thread-IDs des erstgefundenen Prozesses aufgelistet werden.