Seite 1 von 2

Von PID oder hWnd auf den EXE-Namen schließen

Verfasst: 29.12.2006 20:57
von AND51
Hallo!

Was ich früher mit Hilfe von Libs gemacht habe, will ich nun selbst realiseren.

Mir steht von einem Programm ("Tactical Ops") das Fenster-Handle zur Verfügung. Daraus kann ich wenn nötig die PID (Process ID) ermitteln. Soweit die Theorie.

Nun benötige ich aber den Pfad+EXE-Namen, der sich hinter der PID/hWnd verbirgt. Ich habe nun eine lange Suche hinter mir, sowohl im PB Forum, als auch in Google und der MSDN, aber ich finde nichts passendes.

Helft ihr mir?

Verfasst: 29.12.2006 21:51
von Fluid Byte

Code: Alles auswählen

GetWindowModuleFileName_()
Wohl nicht richtig gesucht, hmm? :wink:

Hat mich exakt 1 Minute gekostet!

Dieser Befehl ist im MS Platform SDK gelistet. Falls du das noch nicht installiert hast wird es dringend Zeit! :o

Verfasst: 29.12.2006 22:08
von AND51
Du wirst es nicht glauben, aber den Befhel habe ich auch gefunden! /:->

Aber diese Funktion verlangt "handle to module to find filename for". Ich habe aber kein Handle zu irgendeinem modul, sondern nur die PID/hWnd.

Ich habe auch schon weiter gesucht, aber ich weiß nicht, wie ich GetModulehandle_() in diese ganze Sache einbringen soll.

Verfasst: 29.12.2006 22:28
von Fluid Byte
Mir steht von einem Programm ("Tactical Ops") das Fenster-Handle zur Verfügung.
Öhmmm.......

Code: Alles auswählen

OpenWindow(0,0,0,320,240,"")
lpBuffer = AllocateMemory(255)
GetWindowModuleFileName_(WindowID(0),lpBuffer,255)
Debug PeekS(lpBuffer)

While WaitWindowEvent() ! 16 : Wend
PS: Lass nicht von Microsofts Namenskonventionen verwirren!

Verfasst: 29.12.2006 23:41
von AND51
> PS: Lass nicht von Microsofts Namenskonventionen verwirren!
Danke für den Tipp! Wie gesagt, hätte es da richtig gestanden, das man auch hWnd's einsetzen darf, müsste ich nicht fragen.
Jetzt kann man natürlich sagen: Warum nicht ausprobieren? Dann kan ich natürlich sagen: Schon mal nen pinguin innen Kühlschrank gesteckt? Nur weil's nicht in der Bedienungsanleitung steht, heißt es nicht, dass es auch geht...

> Öhmmm.......
Ja? :wink:

Verfasst: 30.12.2006 00:27
von Fluid Byte
Danke für den Tipp! Wie gesagt, hätte es da richtig gestanden, das man auch hWnd's einsetzen darf, müsste ich nicht fragen.
Ach AND51 du alte Flitzpiepe...

Herlich wie versuchst deine Inkompetenz zu kaschieren! :twisted:

Guckst du hier was SDK gesagt hat:
The GetWindowModuleFileName function retrieves the full path and file name of the module associated with the specified window handle.
Außerdem ist der erste Parameter dieses Befehls vom Typ HWND. :wink:

Verfasst: 30.12.2006 12:57
von AND51
Fluid Byte hat geschrieben:[Herlich wie versuchst deine Inkompetenz zu kaschieren! :twisted:
Ich fühle mich ertappt... :lol:

Aber ehrlich: Ich habe in der WIN32.hlp nachgeschaut, dort steht das etwas anders:
WIN32.hlp hat geschrieben:DWORD GetModuleFileName(

HMODULE hModule, // handle to module to find filename for
LPTSTR lpFilename, // pointer to buffer for module path
DWORD nSize // size of buffer, in characters
);
Dort steht: handle to module, nicht handle to window...

Verfasst: 30.12.2006 13:08
von ts-soft
>> WIN32.hlp hat folgendes geschrieben:
Was ist das für eine Version, wo das enthalten ist?

Verfasst: 30.12.2006 13:10
von AND51
Moment, ich schaue nach... Ich weiß aber, dass ich sie von jemanden aus dem Forum erhalten habe (darkDragon?)...

Edit:
Bild
Meine derzeitige WIN32.hlp-Version

Jetzt weiß ich auch, warum das Wort "XP" in der Hilfe nirgendwo auftaucht: XP erschien erst 2001... :roll: Das neueste, was dort ab und zu steht ist "Now supported on Win NT"

Verfasst: 30.12.2006 13:25
von ts-soft
Meine Version zeigt dasselbe an, aber "GetWindowModuleFileName" ist weder
im Index noch in der Suche :freak:
Aber nicht so wichtig, hab mich nur gewundert.

//Nachtrag:
Du hast den falschen Befehl rausgesucht: Nicht "GetModuleFileName", da
fehlt das Window drinn :lol: