![]() |
Datei mit verknüpften Programm öffnen
Hallo!
Ich will eine Datei mit dem dazugehörigen, registrierten Programm öffnen! Also wie im explorer ...wenn ich eine MP3 Datei doppelt anklicke, öffnet sich der Winamp! Wenn ich auf eine Datei doppelklicke, dessen Dateierweiterung in Windows nicht registriert ist, soll der 'Öffnen mit' Dialog erscheinen. Ist das irgendwie möglich? Hätte es schon mit
Delphi-Quellcode:
versucht.
ShellExecute(0,'open','"kompletterpfadzurdatei"',nil,nil,SW_SHOWNORMAL)
Allerdings passiert hier gar nichts, wenn ich eine Datei mit nicht registrierter Extension öffne. Mein eigentliches Problem ist, dass ich eine Videodatei mit Videolan öffnen will, der Videolan aber nicht aufspringt :-( (es funzt jedoch, wenn ich im expl. die datei doppelt anklicke) Mit JPG's etc. funzt es einwandfrei! Gruß Steran |
Re: Datei mit verknüpften Programm öffnen
Wenn ich mich richtig erinnere, steht in der Windows-Regristry, mit welchem Programm der jeweilige Dateityp standardmäßig geöffnet wird. Im HKEY_CLASSES_ROOT gibt es für jede Dateieindung den entsprechenden Eintrag.
Für Delphi-Units gibt es z.B. den Schlüssel "HKEY_CLASSES_ROOT\.pas" und entsprechendes gilt für andere Dateiendungen. Dort steht dann eine Zeichenfolge "(Standard)", die den Wert "DelphiUnit" hat (oder entsprechendes für andere Dateien). Also sucht man den zugehörigen Schlüssel "HKEY_CLASSES_ROOT\DelphiUnit". Dort ist im Unterschlüssel "Shell\Open\Command" das Programm abgespeichert, mit dem die Datei normalerweise geöffnet wird. Im Beispiel heißt das, dass im "HKEY_CLASSES_ROOT\DelphiUnit\Shell\Open\Comma nd" die Zeichenfolge "(Standard)" mit dem Wert "D:\Programme\Borland\Delphi7\Bin\delphi32.exe /np" steht. Somit hat man das Programm ermittelt, mit dem Delphi-Unit geöffnet werden (sollten). Das Vorgehen für andere Dateitypen folgt (wie es so schön heißt) analog. MfG Binärbaum |
Re: Datei mit verknüpften Programm öffnen
Zitat:
Delphi-Quellcode:
oder
var
ExecInfo: TShellExecuteInfo; FileName: String; begin FileName := 'M:\TEMP\MyFile.ext'; if ShellExecute(Self.Handle, 'Open', PChar(FileName), nil, nil, SW_SHOWNORMAL) = SE_ERR_NOASSOC then begin FillChar(ExecInfo, SizeOf(TShellExecuteInfo), 0); with ExecInfo do begin cbSize := SizeOf(TShellExecuteInfo); Wnd := Self.Handle; lpVerb := 'OpenAs'; lpFile := PChar(FileName); nShow := SW_SHOWNORMAL; end; ShellExecuteEx(@ExecInfo); end; end;
Delphi-Quellcode:
var
FileName: String; begin FileName := 'M:\TEMP\MyFile.ext'; if ShellExecute(Self.Handle, 'Open', PChar(FileName), nil, nil, SW_SHOWNORMAL) = SE_ERR_NOASSOC then ShellExecute(Self.Handle, 'Open', 'rundll32.exe', PChar('shell32.dll,OpenAs_RunDLL ' + FileName), nil, SW_SHOWNORMAL); end; Zitat:
|
Re: Datei mit verknüpften Programm öffnen
Hi Binärbaum!!
Tja..das hab ich auch immer gedacht! Leider gibt's unter HKEY_CLASSES_ROOT keinen .M2P Eintrag. Auch unter Extras-Ordneroptionen-Dateitypen ist der Typ nicht zu finden (auch nicht, wenn ich bei der .M2P Datei öffnen mit mache, und die Datei neu mit VideoLan reggen will. Deshalb verstehe ich auch nicht, wie es sein kann, dass die Datei mit Videolan aufgeht. Wenn ich die Registry nach .M2P durchsuche finde ich nur MRU-Einträge...und die könnens ja wohl nicht sein :-( Ich weiß, das hört sich jetzt blöd an...aber es ist wirklich so! :-( danke auch für deinen post @sprint! Werd das gleich mal testen! Aber ich fürchte halt, dass aufgrund der oben beschriebenen tatsache dann immer das "öffnen mit" aufgeht...werds aber noch testen! thx edit: ...genauso wie ichs befürchtet habe: wenn ich sprint's methode verwende, kommt bei ner m2p datei immer der "öffnen mit" dialog! wenn ich hier "datei immer mit diesem programm öffnen" mache...kommt beim nächsten mal trotzdem der öffnen mit dia! wenn ich die datei manuell regge merkt er sich das auch irgendwie nicht :-( Ich arbeite lokal als admin! Also, das problem welches ihr jetzt habe, ist jetzt wohl eher ein windoof prob :-( mfg Steran |
Re: Datei mit verknüpften Programm öffnen
hi,
guck mal unter HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Explorer\FileExts da werden auch Extensions explecit für einen User mit nem Programm Verknüpft. mfg lordcroc |
Re: Datei mit verknüpften Programm öffnen
thx a lot @lordcroc
hier ist die extension registriert! anscheinend ignoriert ShellExecute die hier registrierten Erweiterungen aber :-( Gibt's ne möglichkeit (ohne Registry-Zugriff), auch diese registrierten Erweiterungen zu berücksichtigen? |
Re: Datei mit verknüpften Programm öffnen
da ich ma so ein ähnliches Problem hatte, habe ich einfach geguckt die Extension zufällig unter CURRRENT_USER... registriert ist und falls ja hab ich dann das Programm mit dem Dokument als Parameter aufgerufen.
mfg lordcroc |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 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