Ich bin dem Problem einen Schritt näher gekommen indem ich mir einen auf PIDL's basierten Explorer nachgebastelt habe.
Das "Geheimnis" ist, das im Fonts Ordner abgelegte Dateien von Windows anders angesprochen werden.
Mein Anhang sagt mehr als tausend Worte, wie man allerdings von den Objekten wiederum einen Dateinamen zaubert bleibt mir noch verborgen.
Nun zu Deinem Eigenschaften-Dialog, hier ist ein getesteter Kode der den Standard Windows Eigenschaften Dialog provoziert.
Delphi-Quellcode:
procedure PropertiesDialog(const Path: string); overload;
var
SEI: TShellExecuteInfo;
begin
FillChar(SEI, SizeOf(SEI), 0);
SEI.cbSize := SizeOf(SEI);
SEI.lpFile := PChar(Path);
SEI.lpVerb := 'properties';
SEI.fMask := SEE_MASK_INVOKEIDLIST;
ShellExecuteEx(@SEI);
end;
procedure PropertiesDialog(const PIDL: PItemIDList); overload;
var
SEI: TShellExecuteInfo;
Path: array[0..MAX_PATH - 1] of WideChar;
begin
if SHGetPathFromIDList(PIDL, @Path) then
begin
FillChar(SEI, SizeOf(SEI), 0);
SEI.cbSize := SizeOf(SEI);
SEI.lpFile := PChar(String(Path));
SEI.lpVerb := 'properties';
SEI.fMask := SEE_MASK_INVOKEIDLIST;
ShellExecuteEx(@SEI);
end;
end;