Ist schon eine Weile her, dass ich mit dem Thema 'properties' zu tun hatte, daher war mir nicht mehr klar, dass SEE_MASK_INVOKEIDLIST tatsächlich gebraucht wird.
Bei mir funktioniert folgender Code (zusammengestrichen für dieses Thema) einwandfrei, um den Eigenschaften-Dialog einer Datei anzuzeigen. Falls die Datei einen entsprechenden ADS hat, erscheint auch der "Sicherheits"hinweis und das "Zulassen":
Delphi-Quellcode:
function MyShellExecute(const AExecutable, AParams: string;
const AHandle: THandle = 0;
const AVerb: string = '';
const AShow: integer = SW_SHOWNORMAL): Boolean;
const SEE_MASK_DEFAULT = $0;
var SEI: TShellExecuteInfo;
begin
FillChar(SEI, SizeOf(SEI), 0);
SEI.lpVerb:= PChar(AVerb);
SEI.fMask:= SEE_MASK_INVOKEIDLIST;
SEI.Wnd:= AHandle;
SEI.lpFile:= PChar(AExecutable);
SEI.nShow:= AShow;
SEI.cbSize:= SizeOf(SEI);
Result:= ShellExecuteEx(@SEI);
end;
Aufruf z.B. mit
MyShellExecute('C:\somefile.ext', '', 0, 'properties');
.
Grüße
Dalai