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

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

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

Beitrag 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?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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!
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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:
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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...
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> WIN32.hlp hat folgendes geschrieben:
Was ist das für eine Version, wo das enthalten ist?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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"
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten