![]() |
ShellExecute öffnet nicht alle Dateien?
Ich möchte mit ShellExecute beliebige Dateien mit ihrem Standardprogramm öffnen.
Das funktioniert leider nicht bei allen. Musikdateien und Bilder wollen zB. nicht. So benutze ich ShellExecute:
Delphi-Quellcode:
//Parameter auswerten
if (ParamStr(1)<>'') then ShellExecute(Application.Handle, 'open', PChar(ParamStr(1)), nil, nil, 1) |
Re: ShellExecute öffnet nicht alle Dateien?
Mit welchem Programm sind die dateien verknüpft? Öffnet sich das verknüpfte Programm, wenn man sie im Expolrer doppelt anklickt? Für was steht die 1? Warum nimmst du dort keine Konstante, wie SW_SHOW? Was sagt der Rückgabewert von
![]() |
Re: ShellExecute öffnet nicht alle Dateien?
Ich war mal wieder zu voreilig.
Der Rückgabewert war 2, also "Datei nicht gefunden" Ich hab mir dann mal angesehen welcher Dateiname als Parameter übergeben wird und festgestellt, dass der String abgeschnitten war beim Leerzeichen. Beim Hinterlegen hab ich jetzt den Param-Str in Anführungszeichen gesetzt und voilá...es funktioniert Ich verwende keine Konstante, weil das ShellExecute in der Project-Datei ausgeführt wird und ich so in der uses-Klausel extra Windows reinpacken müsste. Weiß zwar nicht ob das dann nachher nen Unterschied macht, aber 1 ist ja das Äquivalent von SW_SHOWNORMAL. Jetzt sieht der Aufruf so aus:
Delphi-Quellcode:
ShellExecute(Application.Handle,
'open', PChar(ParamStr(1)), nil, PChar(ExtractFilepath(ParamStr(1))), 5); |
Re: ShellExecute öffnet nicht alle Dateien?
Ah Mist, jetzt hab ich doch noch einen Fehler gefunden:
Wenn Dateien die mit dem VLC-Player verknüpft sind geöffnet werden soll tritt Fehler 31 auf (SE_ERR_NOASSOC). Im Explorer kann ich aber ganz normal auf die Datei doppelklicken und auch im Run-Dialog funktioniert es. Was läuft da verkehrt? |
Re: ShellExecute öffnet nicht alle Dateien?
Zitat:
Warum sich die VLC-Dateien mit Shellexecute nicht öffnen lassen, kann ich dir leider auch nicht sagen. |
Re: ShellExecute öffnet nicht alle Dateien?
Zitat:
Danke für den Hinweis mit dem Compiler, wieder was dazu gelernt. Das Problem mit dem VLC-Player konnte ich gerade lösen indem ich ShellExecute nicht mit 'open' sonder mit nil aufrufe. In dem Fall benutzt er die Standard-Aktion aus der Registry und erst wenn keine definiert ist Open |
Re: ShellExecute öffnet nicht alle Dateien?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 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 by Thomas Breitkreuz