![]() |
Wie im Datei-Eigenschaften Dialog zusätzliche Sicherheitsoption anzeigen lassen
Liste der Anhänge anzeigen (Anzahl: 1)
Aus diesem
![]() Wenn ich den Dialog programmgesteuert aufrufe, habe ich das bislang mit der unten stehenden Funktion gemacht, da fehlt aber der untere Eintrag zur Sicherheit. Was muss ich ändern, damit dieser auch angezeigt wird?
Delphi-Quellcode:
function ShowProperties(hWndOwner: HWND; const FileName: string;
Registerkarte: PChar): Boolean; var Info: TShellExecuteInfo; begin { Fill in the SHELLEXECUTEINFO structure } with Info do begin cbSize := SizeOf(Info); fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_INVOKEIDLIST or SEE_MASK_FLAG_NO_UI; wnd := hWndOwner; lpVerb := 'properties'; lpFile := pChar(FileName); lpParameters := registerkarte; lpDirectory := nil; nShow := 0; hInstApp := 0; lpIDList := nil; end; { Call Windows to display the properties dialog. } Result := ShellExecuteEx(@Info); end; |
AW: Wie im Datei-Eigenschaften Dialog zusätzliche Sicherheitsoption anzeigen lassen
Nur zur Info: Dieses Element wird ausschließlich dann angezeigt, wenn die Datei einen NTFS ADS (Alternate Data Stream) hat, der :Zone.Identifier:$DATA heißt und einen bestimmten Inhalt hat:
Code:
Sobald man auf Zulassen klickt, wird der ADS entfernt.
[ZoneTransfer]
ZoneId=3 Aber zum Problem. Du nutzt das Flag SEE_MASK_INVOKEIDLIST, was laut MS Zitat:
Delphi-Quellcode:
, obwohl MS sagt
nil
Zitat:
![]() Es gibt da also eine Diskrepanz der Angaben. Probier's mal ohne SEE_MASK_INVOKEIDLIST. Grüße Dalai |
AW: Wie im Datei-Eigenschaften Dialog zusätzliche Sicherheitsoption anzeigen lassen
Vielen Dank für die Antwort.
Wenn ich das weglasse, gibt Result von ShellExecuteInfo "false" zurück und der Dialog wird gar nicht angezeigt... |
AW: Wie im Datei-Eigenschaften Dialog zusätzliche Sicherheitsoption anzeigen lassen
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:
Aufruf z.B. mit
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;
Delphi-Quellcode:
.
MyShellExecute('C:\somefile.ext', '', 0, 'properties');
Grüße Dalai |
AW: Wie im Datei-Eigenschaften Dialog zusätzliche Sicherheitsoption anzeigen lassen
Habe jetzt gemerkt, dass ich im Explorer auf eine Namensähnliche Datei (beide im Download-Ordner) geklickt hatte, bei meinen Versuchen aber eine andere Datei ausgewählt habe, die das Flag wohl nicht mehr hatte.
Meine Funktion funktionierte also doch einwandfrei, bin hier nur einer blöden Verwechselung unterlegen. Sorry...:oops: |
AW: Wie im Datei-Eigenschaften Dialog zusätzliche Sicherheitsoption anzeigen lassen
Ja, gegen Benutzerfehler hilft auch der beste Code nichts :mrgreen:.
Grüße Dalai |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:40 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