Exe-Namen eines fremden Fensters ermitteln? (war: Programm- Name?)
-
Ich hab' ein Programm, welches alle Windows- Fenster auflistet.
Handle, Titel, Sichtbarkeit, IsChild ...
Wie komme ich an den Namen der Exe / oder DLL- Datei heran, wenn ich das Windowshandle habe?
Edit:
Bitte aussagekräftige Überschriften wählen. Danke!
-
Denkst du wirklich, dass es dafür eine BCB-spezifische Funktion gibt?
Du bist doch auch nicht den ersten Tag dabei.Verschoben nach WinAPI.
-
Hallo,
so ganz direkt kommt man nicht an den Namen der .exe-Dateien, aber die API-Funktion GetWindowThreadProcessId:
liefert die Prozess-ID, mit der man dann auch an die .exe-Namen kommt, mit Hilfe der Funktionen der "Tool Help Library":
kommt man schließlich von der Prozess-ID auf den .exe-Namen
MfG
-
Oder aber über
DWORD lpdwProcessId = 0; HANDLE hProcessHandle = NULL; char szPathFromHandle[MAX_PATH]; GetWindowThreadProcessId(hWnd, &lpdwProcessId); hProcessHandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, TRUE, lpdwProcessId); GetModuleFileNameEx(hProcessHandle, NULL, szPathFromHandle, MAX_PATH); CloseHandle(hProcessHandle);
Dann haste in szPathFromHandle den kompletten Pfad stehen. Mit PathStripPath(szPathFromHandle); hätte man dann die .exe alleine...
Hat den Nachteil, das es nur unter NT-basierten OS (WinNT, Win2000, WinXP, WinServer2003) funktioniert...
-
ja, genau Hepi, die Beschränkung auf NT-Systeme war auch der Grund, warum ich meine Variante angegeben habe. Aber damit haben wir wohl alle Möglichkeiten zusammen...
MfG
-
Hi Hepi & Probenutzer,
Danke fuer die schnellen Antworten.
Aber mein Compiler kennt 'GetModuleFileNameEx' nicht ???
Hab' nur GetModuleFileName, damit geht's aber nicht.
Ich benutze den BCB 4.0!
Wisst Ihr auch , welche Header ich brauche?thx DerAltenburger
-
für GetModuleFileNameEx brauchst du den Header Psapi.h und die Import-Library Psapi.lib. Wenn du dir diese Dateien nicht irgendwo besorgen kannst, dann ist der "offizielle Weg", daß du dein Platform SDK (dort sind immer die aktuellsten Dateien enthalten) aktualisierst, zu bekommen hier:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
aber wie gesagt, funktioniert dann trotzdem erst ab NT
MfG
-
Hi Probe-Nutzer,
Eine PSApi.dll hab ich gefunden. Hab' auch 'ne PSApi.hpp (Delphi).
damit meckert der Compiler aber auch 'rum - 'Kann PSApi.h nicht oeffnen' - Hatt er ja auch nicht.
Woher kann ich die .h kriegen? Bei Microsoft gibt's nur die .dll.
-
Wie schon gesagt: PSDK-Update
-
DerAltenburger schrieb:
Hab' auch 'ne PSApi.hpp [...] damit meckert der Compiler aber auch 'rum - 'Kann PSApi.h nicht oeffnen' - Hatt er ja auch nicht.
Nein, hat er nicht. Deshalb sollst du ja auch psapi.hpp einbinden:
#include <psapi.hpp>
-
WebFritzi schrieb:
Nein, hat er nicht. Deshalb sollst du ja auch psapi.hpp einbinden
Soll er? Ist doch aber Delphi...
Ich sage das schreit nach PSDK-Update...
-
WebFritzi schrieb:
Nein, hat er nicht. Deshalb sollst du ja auch psapi.hpp einbinden:
Hab ich ja versucht, aber der will extra noch ne psapi.h ???
Die wird in der hpp includiert!?
-
und genau deswegen brauchst du wohl doch das PSDK:
Probe-Nutzer schrieb:
für GetModuleFileNameEx brauchst du den Header Psapi.h und die Import-Library Psapi.lib. Wenn du dir diese Dateien nicht irgendwo besorgen kannst, dann ist der "offizielle Weg", daß du dein Platform SDK (dort sind immer die aktuellsten Dateien enthalten) aktualisierst, zu bekommen hier:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
aber wie gesagt, funktioniert dann trotzdem erst ab NT
flenders schrieb:
Wie schon gesagt: PSDK-Update
Hepi schrieb:
Ich sage das schreit nach PSDK-Update...
wieviel Meinungen brauchst du noch...(in der Zeit könntest du es schon heruntergeladen haben)
MfG
-
hi,
bekommt man das psdk auf irgendwo komplett und nicht über activex-controls?
-
Ja, schau mal hier!
-
-
Ich werde mich hüten, Plagiate meiner Postings zu verlinken, flenders...
-
Probe-Nutzer schrieb:
wieviel Meinungen brauchst du noch...(in der Zeit könntest du es schon heruntergeladen haben)
Hab' mir von Microsoft die psinst.EXE runtergeladen und 'installiert' da ist aber nur die Sch**** .DLL drin.
Das ganze PSDK will ich nicht runterladen (Hunderte MB), ich arbeite ja eigentlich mit BCB. Ich brauch nur die PSapi mit der PSAPI.H.
Kann mir einer die Headerdatei Psapi.h zumailen?
-
Wenn Du Anwendungen für Windows entwickeln willst, brauchst Du das Software Developer Kit für Windows, oder aber das Windows SDK (
Neuerdings heißt das Ding Platform SDK)...
Da ist es scheißegal mit welchem Compiler/welcher IDE Du arbeitest...Willst Du nun Anwendungen für Windows entwickeln oder was?
Außerdem schätze ich mal wird dir die Psapi.h ohne Psapi.lib nicht viel bringen....
-
DerAltenburger schrieb:
Hab' mir von Microsoft die psinst.EXE runtergeladen und 'installiert' da ist aber nur die Sch**** .DLL drin.
das ist bedeutend zu wenig...
DerAltenburger schrieb:
Das ganze PSDK will ich nicht runterladen (Hunderte MB), ich arbeite ja eigentlich mit BCB. Ich brauch nur die PSapi mit der PSAPI.H.
DerAltenburger schrieb:
Kann mir einer die Headerdatei Psapi.h zumailen?
du brauchst eine ordentliche Grundlage, um Windows-Programme zu erstellen, in diesem Falle zumindest auch die Psapi.lib, also solltest du schon das PSDK herunterladen (um auch in Zukunft Probleme mit fehlenden Dateien/Funktionen zu vermeiden).
Es gibt übrigens Tools, die aus DLLs Import-Libraries erzeugen können. Beim VC-Compiler werden solche Tools mitgeliefert:
http://support.microsoft.com/default.aspx?scid=kb;en-us;q131313
aber das würde ich nur im Notfall tun
MfG