Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ShellExecute und SE_ERR_ACCESSDENIED-Fehlermeldung??? (https://www.delphipraxis.net/13649-shellexecute-und-se_err_accessdenied-fehlermeldung.html)

max666 23. Dez 2003 10:36


ShellExecute und SE_ERR_ACCESSDENIED-Fehlermeldung???
 
Hallo!

Habe folgendes Problem: Ich möchte eine .lnk-Datei mit ShellExecute starten, erhalte aber den Rückgabewert "5", also SE_ERR_ACCESSDENIED.

Wie kann ich das Problem lösen?

Gruß aus dem
Emsland

Christian Seehase 23. Dez 2003 12:19

Re: ShellExecute und SE_ERR_ACCESSDENIED-Fehlermeldung???
 
Moin Max,

wie sieht denn der Aufruf aus?

max666 23. Dez 2003 12:42

Re: ShellExecute und SE_ERR_ACCESSDENIED-Fehlermeldung???
 
Hier kommt ein Beispiel, wie es bei mir nicht funktioniert.


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var path: String;
    rueckgabewert: integer;
begin
path:='C:\Dokumente und Einstellungen\max\Desktop\XP-Clean.lnk';
rueckgabewert:=ShellExecute(handle, 'open', PChar(path),nil,nil,SW_SHOWNORMAL);
label1.Caption:=IntToStr(rueckgabewert);
end;

Als Rückgabewert zeigt label1.caption immer "5" an, also "SE_ERR_ACCESSDENIED".
Bei anderen lnk-Dateien funktioniert die Geschichte.

[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]

Christian Seehase 23. Dez 2003 12:49

Re: ShellExecute und SE_ERR_ACCESSDENIED-Fehlermeldung???
 
Moin Max,

statt:
Delphi-Quellcode:
path:='C:\Dokumente und Einstellungen\max\Desktop\XP-Clean.lnk';
probier's mal mit

Code:
path:='[color=red]"[/color]C:\Dokumente und Einstellungen\max\Desktop\XP-Clean.lnk[color=red]"[/color]';
Da es schlecht zu lesen ist:
Der Pfad sollte in doppelt Anführungsstriche eingeschlossen werden, da er Leerzeichen enthält.

max666 23. Dez 2003 13:07

Re: ShellExecute und SE_ERR_ACCESSDENIED-Fehlermeldung???
 
Hallo Chris!

Leider geht das auch nicht. Wenn ich die Verknüpfung auf dem Dektop doppelt anklicke, startet XP-Clean, von Delphi aus tut sich nichts. Rückgabewert 5.

Kann man in Delphi möglicherweise einen Doppelklick simulieren?
Wenn ich die lnk-Infos auslesen könnte, hätte ich Zugriff auf die originale Startdatei.
Funktioniert das dann aber auch bei lnk-Dateien, die mit einer Text-Datei verknüpft sind.

Aus mir ungekannten Gründen ist die XP-Clean.lnk eine geschützte Datei, auf die ich von Delphi aus, keinen Zugriff bekomme.

Gruß
David

Christian Seehase 23. Dez 2003 13:12

Re: ShellExecute und SE_ERR_ACCESSDENIED-Fehlermeldung???
 
Moin David,

die Daten eines Links solltest Du auslesen können.
Such hierzu hier mal nach Hier im Forum suchenIShellLink
In den meisten Fällen wird zwar beschrieben, wie man einen Link erstellt, aber i.d.R. kann man an vielen Stellen statt Setxxx auch Getxxx verwenden um die Daten auszulesen, statt sie zu setzen.
Nähere Einzelheiten kannst Du auch im PSDK bzw MSDN (msdn.microsoft.com) finden.

Wieso der Aufruf nicht funktioniert versteh' ich allerdings nicht.

max666 24. Dez 2003 09:22

Re: ShellExecute und SE_ERR_ACCESSDENIED-Fehlermeldung???
 
Hallo!

Ich habe die Lösung.

Alt und fehlerhaft:
rueckgabewert:=ShellExecute(handle, 'open', PChar(path),nil,nil,SW_SHOWNORMAL);


Neu und gut:
rueckgabewert:=ShellExecute(0, nil, PChar(path),nil,nil,SW_SHOWNORMAL);


Mit diesen Einstellungen, kann nun jede lnk-Datei gestartet werden.

Gruß
David


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:51 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