AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit GetModuleFileName

Ein Thema von gpvg · begonnen am 3. Apr 2008 · letzter Beitrag vom 3. Apr 2008
Antwort Antwort
gpvg

Registriert seit: 22. Mär 2007
Ort: Erfurt
18 Beiträge
 
Turbo Delphi für Win32
 
#1

Problem mit GetModuleFileName

  Alt 3. Apr 2008, 14:27
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?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Problem mit GetModuleFileName

  Alt 3. Apr 2008, 14:45
Zeig mal deinen Code, eventuell ist dort ein Fehler drin.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Andi1985
Andi1985

Registriert seit: 11. Mai 2007
Ort: NRW
116 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: Problem mit GetModuleFileName

  Alt 3. Apr 2008, 14:56
If the function fails, the return value is 0 (zero).
To get extended error information, call GetLastError.

sagt GetLastError() vieleicht was?
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Problem mit GetModuleFileName

  Alt 3. Apr 2008, 17:18
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
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
gpvg

Registriert seit: 22. Mär 2007
Ort: Erfurt
18 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Problem mit GetModuleFileName

  Alt 3. Apr 2008, 18:30
Zitat von Luckie:
Zeig mal deinen Code, eventuell ist dort ein Fehler drin.
Im wesentlichen Folgendes. Das Handle hole ich mir aus der Prozeßtabelle.

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.
  Mit Zitat antworten Zitat
gpvg

Registriert seit: 22. Mär 2007
Ort: Erfurt
18 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Problem mit GetModuleFileName

  Alt 3. Apr 2008, 18:34
Zitat von OldGrumpy:
Moment, GetModuleFileName funktioniert doch nur für den eigenen Prozess.
Davon steht aber nichts in der Delphi-Hilfe. Muß ich wohl noch ein wenig suchen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Problem mit GetModuleFileName

  Alt 3. Apr 2008, 18:37
Zitat von gpvg:
Davon steht aber nichts in der Delphi-Hilfe. Muß ich wohl noch ein wenig suchen.
Dafür aber in der zugehörigen Hilfe:
Zitat:
Retrieves the fully-qualified path for the file that contains the specified module. The module must have been loaded by the current process.
Wenn es um Windows API-Funktionen geht, würde ich immer die Dokumentation von Microsoft heranziehen und mich nicht auf Aussagen Dritter verlassen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz