![]() |
Problem mit GetModuleFileName
Die Beschreibung in Turbo Delphi:
Rufen Sie GetModuleFileName auf, um den vollständig qualifizierten Namen eines Moduls anhand seines Handles abzurufen. Die in der Unit System definierte Version von GetModuleFileName steht nur unter Linux zur Verfügung. Unter Windows verwenden Sie stattdesseen die Windows-API mit demselben Namen. Module ist das Handle des Moduls, dessen Name erforderlich ist. Buffer ist ein Puffer, der den Dateinamen empfängt. BufLen ist die Anzahl der Byte in Buffer. GetModuleFileName gibt die Anzahl der Byte zurück, die in Buffer geschrieben werden. Soweit alles in Ordnung. Jetzt kommt aber der Hammer! Warnung: GetModuleFileName liefert nicht immer den gewünschten Rückgabewert. Unter bestimmten Bedingungen (Aufrufart der Anwendung, Vorhandensein des /proc-Dateisystem usw.) kann GetModuleFileName einen Namen zurückgeben, der nicht voll qualifiziert ist. Manchmal wird auch überhaupt kein Dateiname zurückgegeben. Vergessen Sie nicht, die Ergebnisse dieser Funktion zur überprüfen, bevor Sie den Rückgabewert verwenden. Tja, genau vor diesem Problem stehe ich. Ich habe das Handle eines Prozesses, aber GetModuleFileName spuckt nichts aus. Ich brauche aber den vollen Pfadnahmen des Prozesses. Weiß jemand, wie man noch an den vollen Pfadnamen herankommt? |
Re: Problem mit GetModuleFileName
Zeig mal deinen Code, eventuell ist dort ein Fehler drin.
|
Re: Problem mit GetModuleFileName
If the function fails, the return value is 0 (zero).
To get extended error information, call GetLastError. sagt GetLastError() vieleicht was? |
Re: Problem mit GetModuleFileName
Moment, GetModuleFileName funktioniert doch nur für den eigenen Prozess. Um prozessübergreifend zu arbeiten gibt es GetModuleFileNameEx - nichtsdestotrotz wirfst Du zusätzlich die unterschiedlichen Arten Handles durcheinander.
Ein paar Pointer wie Du den Prozessnamen (inkl. Pfad) bekommst: - EnumProcessModules liefert eine Liste aller Module im spezifizierten Prozess - Der erste Eintrag in der Liste ist immer die Exe - GetModuleFileNameEx mit Prozess-Handle und Module-Handle aus obiger Liste liefert dann den Namen. War jetzt zu faul, da auch noch die MSDN-Seiten zu verlinken, Google hilft :) |
Re: Problem mit GetModuleFileName
Zitat:
var ModulePath: array[0..MAX_PATH] of Char; hModule: cardinal; begin GetModuleFileName(hModule, ModulePath, length(ModulePath)); Writeln(Modulepath); end. Habe mir mal Dein EnumProcesses gesaugt. Vielleicht steht dort die Lösung. |
Re: Problem mit GetModuleFileName
Zitat:
|
Re: Problem mit GetModuleFileName
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz