![]() |
Dateitypen automatisch öffnen TWebbrowser
Hallo!
Wie kann ich im TWebBrowser einstellen, dass bestimmte Dateien eines Typs (z.B. .mp3 oder .rtf) beim Klick auf den Link automatisch mit einem vorher festgelegten Programm geöffnet werden? |
Re: Dateitypen automatisch öffnen TWebbrowser
|
Re: Dateitypen automatisch öffnen TWebbrowser
Ich meine nur in einem TWebBrowser in meinem Programm. Nicht gleich im ganzen InternetExplorer!
|
Re: Dateitypen automatisch öffnen TWebbrowser
Hat keiner eine Idee? (Es geht darum, Anwendungen (EXE) oder andere Dokumente automatisch ohne Nachfrage zu öffnen. Das soll aber nur in diesem Einen Programm möglich sein)
|
Re: Dateitypen automatisch öffnen TWebbrowser
Es gibt doch auch andere Programme, wie z.B. die Systeme von der PCWelt, oderso, die sowas mit dem IE machen können! Geht das nicht mit Delphi?
|
Re: Dateitypen automatisch öffnen TWebbrowser
|
Re: Dateitypen automatisch öffnen TWebbrowser
Hallo Thomas,
OnTranslateUrl() gestattet die Abänderung eines URL, bevor er beim Server abgefragt wird - wäre da nicht OnBeforeNavigate2() besser geeignet? Ich könnte mir vorstellen, dass man im Event OnBeforeNavigate2() den URL zerlegt (InternetCrackUrl) und bei Feststellung einer speziellen Erweiterung die Navigation abbricht, das Dokument per Download (Indy oder WinInet) besorgt und dann per temporärer Datei und ShellExecute() (nicht jedes Helper-Programm wird ein Stream-Interface mitbringen) an das assoziierte Programm übergibt. Freundliche Grüße |
Re: Dateitypen automatisch öffnen TWebbrowser
Danke, jetzt geht's! :thumb: Hier der Code:
Delphi-Quellcode:
Vielleicht bekommt man die Umwandlung von OLEVariant in PAnsiChar besser hin, aber der Code hier funktioniert jedenfalls!
uses ShellAPI;
//... procedure TForm1.WebBrowser1BeforeNavigate2(ASender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); var h: String; begin H:=LowerCase(ExtractFileext(URL)); if (h ='.exe') or (h='.mp3') or (h='.rtf') then begin Cancel:=true; h:=URL; Shellexecute(Application.Handle, 'open', PAnsiChar(h), nil, nil, SW_ShowNormal); end; end; [edit]Code hinzugefügt[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 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