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 |
Re: ShellExecute und SE_ERR_ACCESSDENIED-Fehlermeldung???
Moin Max,
wie sieht denn der Aufruf aus? |
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] |
Re: ShellExecute und SE_ERR_ACCESSDENIED-Fehlermeldung???
Moin Max,
statt:
Delphi-Quellcode:
probier's mal mit
path:='C:\Dokumente und Einstellungen\max\Desktop\XP-Clean.lnk';
Code:
Da es schlecht zu lesen ist:
path:='[color=red]"[/color]C:\Dokumente und Einstellungen\max\Desktop\XP-Clean.lnk[color=red]"[/color]';
Der Pfad sollte in doppelt Anführungsstriche eingeschlossen werden, da er Leerzeichen enthält. |
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 |
Re: ShellExecute und SE_ERR_ACCESSDENIED-Fehlermeldung???
Moin David,
die Daten eines Links solltest Du auslesen können. Such hierzu hier mal nach IShellLink 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. |
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