![]() |
Der eigene Browser
Hallo zusammen,
mein Browser ist schon fast fertig. Dachte ich zumindest, bis eine neuen Anforderung kam. Einige User legen mit dem IE schon Links zu verschiedenen Seiten auf Ihrem Desktop ab (.url Dateien). Jetzt sollen diese Verknüpfungen auf mit meinem Browser zu öffnen sein. Die Extension ist schon meinem Browser zugeordnet, mir fehlt lediglich die Idee, wie ich die URL aus der .url Datei heraus bekomme? Jemand ne Idee? Die .url Datei sieht folgend aus:
Delphi-Quellcode:
[DEFAULT]
BASEURL=http://www.spiegel.de/ [InternetShortcut] URL=http://www.spiegel.de/ IDList= IconFile=http://www.spiegel.de/favicon.ico IconIndex=1 [{000214A0-0000-0000-C000-000000000046}] Prop3=19,2 |
Re: Der eigene Browser
Ich denke mal TInifile ist das Stichwort
|
Re: Der eigene Browser
Es handelt sich um eine einfache Ini-Datei, die du zum Beispiel mit der Klasse "TIniFile" aus der Unit "IniFile" auslesen kannst.
|
Re: Der eigene Browser
Ja, der Gedanke kam mir auch gerade.
Ich werds mal versuchen. Danke. |
Re: Der eigene Browser
irgendwie funzt das mit der .url Datei auslesen nicht.
Delphi-Quellcode:
Er kann aus der Url nicht lesen.
rocedure TForm1.FormCreate(Sender: TObject);
var starturl,startstring:string; begin if ParamCount>0 then startstring := ParamStr(1); if not FileExists(startstring) then starturl := 'http://srvapp02/Home/default.aspx'; MyUrl := TiniFile.Create(startstring); starturl := MyUrl.ReadString('InternetShortcut','URL',''); WebBrowser1.Navigate(WideString('http://srvapp02/P2plus/p2way/p2way.aspx')); WebBrowser2.Navigate(WideString(starturl)); |
Re: Der eigene Browser
Also, erstens gewöhn dir mal bitte ordentliche Codeformatierung an, sonst kann das kein Schwein lesen.
Delphi-Quellcode:
Dann fällt dir hoffentlich auch auf dass du, auch wenn die Datei gar nicht existiert, versuchst diese zu öffnen.
procedure TForm1.FormCreate(Sender: TObject);
var starturl,startstring:string; begin if ParamCount>0 then startstring := ParamStr(1); if not FileExists(startstring) then starturl := 'http://srvapp02/Home/default.aspx'; MyUrl := TiniFile.Create(startstring); starturl := MyUrl.ReadString('InternetShortcut','URL',''); WebBrowser1.Navigate(WideString('http://srvapp02/P2plus/p2way/p2way.aspx')); WebBrowser2.Navigate(WideString(starturl)); //ich hoffe da kommt noch was |
Re: Der eigene Browser
habs gemerkt.
Danke das mich zur Ordnung rufst. Hast ja recht. Der Fehler lag hier:
Delphi-Quellcode:
MyUrl := TiniFile.Create('\'+startstring);
|
Re: Der eigene Browser
Hä?
War das der Fehler oder meinst du, dass es so richtig ist? Weil das ist garantiert falsch. |
Re: Der eigene Browser
So fuktioniert es aber.
Wo liegt deiner Meinung nach der Fehler? |
Re: Der eigene Browser
Zitat:
Jeder User hat ein Favoriten Verzeichnis. Auf meinem Vista-Rechner wäre das: C:\Users\sx2008\Favorites Wo das Verzeichnis liegt, lässt sich mit einer API-Funktion rausfinden. In diesem Verzeichnis tummeln sich die URL-Dateien. Der Name der UDL-Dateien ist gleich der Name des Links. Unterverzeichnisse dienen zur besseren Organisation. Du braucht jetzt nur das Favoritenverzeichnis auslesen und dem Benutzer im Menue anbieten. |
Re: Der eigene Browser
Moin, Moin,
mit
Delphi-Quellcode:
setzt du entweder einen relativen Pfad, oder, wenn in "StartString" ein absoluter Pfad angegeben ist, einen ungültigen Pfad. Im ersten Fall kann es funktionieren, istr aber dann von der jeweiligen Umgebung abhängig. Also lieber grundsätzlich einen absoluten Pfad bestimmen!
'\'+startstring
// edit : Ja, siehe oben - das ist der bessere Weg |
Re: Der eigene Browser
Einige User legen mit dem IE schon Links zu verschiedenen Seiten auf Ihrem Desktop ab (.url Dateien).
Manche User sind einfach etwas speziell. :wall: Sie haben sich die Arbeitsweise mit den .url Dateien auf dem Desktop so angewöhnt. Daher der Umweg über das Auslesen der .url Datei. |
Re: Der eigene Browser
Zitat:
C:\Dokumentente...\UserA\Desktop |
Re: Der eigene Browser
Dann schau doch mal hier
![]() |
Re: Der eigene Browser
Zitat:
Einfach das Desktop-Verz. mit API-Funktion (ShellGetFolder ?) abfragen und mit FindFile() abgrasen. Alle UDL-Dateien auf dem Desktop und auch in Unterverz. werden so gefunden. |
Re: Der eigene Browser
So wie ich das verstehe, klicken die Anwender doppelt auf die url-Dateien, die mit dem Browser verknüpft sind. Der Browser öffnet sich also und der Dateipfad und Name werden dem Programm dabei übergeben.
Oder sehe ich das falsch? |
Re: Der eigene Browser
Zitat:
|
Re: Der eigene Browser
Welchen Wert hat denn ParamStr(1)?
Dir ist bewusst, dass ParamStr(1) der zweite Parameter des Programms ist? (also nicht ParamCount > 0) Außerdem solltest du nach der if-Abfrage, ob die Datei existiert in einen else-Zweig springen. |
Re: Der eigene Browser
Es funktioniert zwischenzeitlich.
Mein Problem war, dass ich das .url File nach dem ersten lesen nicht mehr geschlossen hatte. So konnte ich beim zweiten Programmaufruf nicht mehr aus der .url Datei lesen.
Delphi-Quellcode:
procedure TForm1.FormActivate(Sender: TObject);
var StartUrl:String; startString:String; begin {Paramter übergeben} if ParamCount>0 then startstring := ParamStr(1); if not fileexists(startstring) then begin starturl := 'http://srvapp02/Home/default.aspx'; end; {Parameter aus der .url Datei lesen} try MyUrl := TiniFile.Create(startstring); starturl := MyUrl.ReadString('InternetShortcut','URL','heise.de'); finally //showmessage (startstring); //showmessage (starturl); MyUrl.Free; end; {Searchway im Webbrowser1 laden} WebBrowser1.Navigate(WideString('http://srvapp02/p2way.aspx')); {.url Datei in WebBrowser2 laden / falls vorhanden} WebBrowser2.Navigate(WideString(starturl)); end; |
Re: Der eigene Browser
Die Anweisung ParamCount > 0 kannst du weglassen.
ParamStr gibt einen leeren String zurück, wenn der Index nicht vorhanden ist. Edit: Und wieso packst du das Öffnen der Datei nicht in einen Else-Zweig? Die Starturl ist doch schon gesetzt, wenn die Datei nicht geöffnet werden kann. LG, Xong |
Re: Der eigene Browser
Zitat:
Und das mit dem else-Teil fehlt immer noch, Cosamia! |
Re: Der eigene Browser
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 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