Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Der eigene Browser (https://www.delphipraxis.net/108731-der-eigene-browser.html)

Cosamia 18. Feb 2008 16:35


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

HalloDu 18. Feb 2008 16:38

Re: Der eigene Browser
 
Ich denke mal TInifile ist das Stichwort

igel457 18. Feb 2008 16:38

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.

Cosamia 18. Feb 2008 16:39

Re: Der eigene Browser
 
Ja, der Gedanke kam mir auch gerade.
Ich werds mal versuchen.
Danke.

Cosamia 18. Feb 2008 16:55

Re: Der eigene Browser
 
irgendwie funzt das mit der .url Datei auslesen nicht.

Delphi-Quellcode:
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));
Er kann aus der Url nicht lesen.

inherited 18. Feb 2008 17:13

Re: Der eigene Browser
 
Also, erstens gewöhn dir mal bitte ordentliche Codeformatierung an, sonst kann das kein Schwein lesen.
Delphi-Quellcode:
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
Dann fällt dir hoffentlich auch auf dass du, auch wenn die Datei gar nicht existiert, versuchst diese zu öffnen.

Cosamia 18. Feb 2008 17:15

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);

inherited 18. Feb 2008 18:28

Re: Der eigene Browser
 
Hä?
War das der Fehler oder meinst du, dass es so richtig ist? Weil das ist garantiert falsch.

Cosamia 19. Feb 2008 06:40

Re: Der eigene Browser
 
So fuktioniert es aber.

Wo liegt deiner Meinung nach der Fehler?

sx2008 19. Feb 2008 07:06

Re: Der eigene Browser
 
Zitat:

Zitat von Cosamia
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.

Warum nicht einfach das Standardsystem der Favoriten übernehmen ??
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.

taaktaak 19. Feb 2008 07:07

Re: Der eigene Browser
 
Moin, Moin,

mit
Delphi-Quellcode:
'\'+startstring
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!

// edit : Ja, siehe oben - das ist der bessere Weg

Cosamia 19. Feb 2008 07:09

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.

Cosamia 19. Feb 2008 07:12

Re: Der eigene Browser
 
Zitat:

Zitat von taaktaak
Moin, Moin,

mit
Delphi-Quellcode:
'\'+startstring
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!

// edit : Ja, siehe oben - das ist der bessere Weg

Ein absoluter Pfad ist leider nicht möglich, da ich ja vorher nicht weiß, wo sich die Datei genau befindet.

C:\Dokumentente...\UserA\Desktop

taaktaak 19. Feb 2008 07:19

Re: Der eigene Browser
 
Dann schau doch mal hier bei den Schweizern, da gibt es 'ne ganze Reihe von Lösungen

sx2008 19. Feb 2008 07:30

Re: Der eigene Browser
 
Zitat:

Zitat von Cosamia
Sie haben sich die Arbeitsweise mit den .url Dateien auf dem Desktop so angewöhnt.

Kein Problem.
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.

Xong 19. Feb 2008 07:35

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?

Cosamia 19. Feb 2008 08:12

Re: Der eigene Browser
 
Zitat:

Zitat von Xong
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?

Genau, so soll es sein.

Xong 19. Feb 2008 08:31

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.

Cosamia 19. Feb 2008 08:46

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;

Xong 19. Feb 2008 08:49

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

inherited 19. Feb 2008 13:23

Re: Der eigene Browser
 
Zitat:

Zitat von Xong
Dir ist bewusst, dass ParamStr(1) der zweite Parameter des Programms ist? (also nicht ParamCount > 0)

Falsch, ParamStr(0) liefert den Pfad zur eigenen .exe, ParamStr(1) enthält, sofern vorhanden, den ersten Parameter.

Und das mit dem else-Teil fehlt immer noch, Cosamia!

Xong 19. Feb 2008 13:35

Re: Der eigene Browser
 
Zitat:

Zitat von inherited
Zitat:

Zitat von Xong
Dir ist bewusst, dass ParamStr(1) der zweite Parameter des Programms ist? (also nicht ParamCount > 0)

Falsch, ParamStr(0) liefert den Pfad zur eigenen .exe, ParamStr(1) enthält, sofern vorhanden, den ersten Parameter.

Ich dachte, ParamCount würde diesen Parameter auch beachten. Doch das ist falsch. Danke!


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