Hallo Zacherl
die Funktion wäre super, nur bring ich sie leider nicht zum funktionieren. Erste kleine Anmerkung: Bei Delphi7 gibt's bei
Delphi-Quellcode:
BufferSize := QueryDosDevice(PChar(LogicalDrives[I] + ':'),
@Buffer[0], MAX_PATH);
in der
Code:
function DeviceNameToFilePath(FileName: String): String;
einen Typumwandlungsfehler.
Lösung: Eine String-Variable (hi) deklarieren und:
Code:
hi := LogicalDrives[I] + ':';
BufferSize := QueryDosDevice(PChar(hi), @Buffer[0], MAX_PATH);
Ich habe zum Testen ein ganz dämliches Programm drum herum gebastelt. Ein Button und ein Edit. ins Edit-Feld gebe ich aus dem Task-Manager eine PID (z.B. von Delphi) ein und mit der rufe ich GetProcessPathByPID auf. Ich bekomme aber immer einen leeren String zurück.
Getestet auf XP-Prof. mit Delphi7. Wenn ich das mit dem Debugger durchspiele, holt er sich zwar ein ImageFileName über die PSAPI.DLL. Aber irgendwie verliert er sich în der Umwandlungsroutine DeviceNameToFilePath. Ich kann mir nicht vorstellen, dass es mit meiner oben erwähnten Korrektur zu tun, vermute aber viel mehr irgend ein Delphi-Versionen-Problem