Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Standardbrowser öffnen (https://www.delphipraxis.net/1509-standardbrowser-oeffnen.html)

Chewie 4. Jan 2003 18:11

Es ist aber auch nicht gesagt, dass jeder Browser die URL einfach als Parameter akzeptiert.

trebormillenium 4. Jan 2003 18:15

Aha
Naja Problem könnte man ja dadurch lösen das man den Pfad des Explorers angeben kann! Es geht mir aber jetzt in erster Linie darum, dass das Programm bei mir (Win XP) läuft!
Deshalb würde ich das Programm erstmal für Windows XP und Internet Explorer 6.0 ans laufen bringen!
Dann falls ich mich entschließen sollte das Programm weiter zugeben könnte man ja sowas noch ändern!

Und nochwas an MathiasSimmack --> Wie geht das? :-) Bin noch net soweit mit Delphi, lerne es z.Z. in der Schule aber da lernt man natürlich nur Std. Sachen deshalb will ich etwas mehr lernen!

MFG Trebor

MathiasSimmack 4. Jan 2003 18:38

Eine einfache Lösung für den IE:
Delphi-Quellcode:
ShellExecute(0,
  'opennew', // <-- !
  'http://www.delphipraxis.net',
  nil,
  nil,
  SW_SHOWNORMAL);
Es wäre natürlich möglich, dass andere Browser diesen Schlüssel auch anlegen. Das wäre natürlich am einfachsten, aber als Pessimist würde ich erst mal nur auf den IE tippen. Daher die Lösung #2: mit der "Registry"-Unit das Programm herausfinden, das für "http" zuständig ist.
Delphi-Quellcode:
uses
  Registry;

{ ... }

var
  reg : TRegistry;
  cmd : string;
begin
  reg := TRegistry.Create(KEY_READ);
  with reg do
  try
    RootKey := HKEY_CLASSES_ROOT;
    if(OpenKey('http\shell\open\command',false)) then
    try
      cmd := ReadString('');
    finally
      CloseKey;
    end;
  finally
    Free;
  end;

  ShellExecute(0,
    'open',
    pchar(cmd),
    'http://www.delphipraxis.net',
    nil,
    SW_SHOWNORMAL);
end;
(Ungetestet aus dem Kopf geschrieben. Bitte berücksichtigen!)

Sollte durch irgendwelche Widrigkeiten der "http"-Schlüssel nicht vorhanden sein, kann man zuerst ".html" öffnen und dort den Standardstring auslesen (s. "cmd := ReadString('');"). Dieser verweist auf einen zweiten Schlüssel (meist "htmlfile"), der dann wieder den Pfad zum Programm enthält:
Code:
htmlfile/shell/open/command
(bitte RegEdit benutzen und die Pfadnamen im Zweifelsfall suchen)

Ich glaube, für solche Sachen gab´s auch ´ne einfachere API-Funktion. Aber da muss ich erst mal gucken; kann sein, dass ich da was verwechsele. Vielleicht weiß die Antwort schon jemand, ansonsten melde ich mich noch mal, wenn sie mir wieder einfällt.

MathiasSimmack 4. Jan 2003 20:09

Mir ist gerade eingefallen, dass sich z.B. der IE manchmal mit einem zusätzlichen Parameter in der Registry verewigt. In meinem Fall (Win98) ist das so.
Code:
"C:\PROGRA~1\INTERN~1\iexplore.exe" -nohome
Dieser Parameter "-nohome" ist notfalls aus dem String zu entfernen und an die URL ranzuhängen. Wer sich diesen Copy/Delete-Quark sparen will, kann und sollte z.B. Luckies RunProcess benutzen, weil man hier das Kommando inkl. aller Parameter als kompletten String übergeben kann.

Christian Seehase 4. Jan 2003 20:22

Moin Mathias,

das man den Parameter (-nohome) erst entfernen muss hab' ich auch mal gedacht. Muss aber nicht sein, funktioniert auch wenn der stehenbleibt.

trebormillenium 4. Jan 2003 20:52

So jetzt zur nächsten Frage :D, wie kann ich in den Code eine Variabele bei der Adresse einfügen, so dass man z.B. die Adresse vorher manuell in ein Edit-Feld eingeben kann und das Programm die dann öffnet?

Delphi-Quellcode:
begin
ShellExecute(Handle,'open','C:\Programme\Internet Explorer\IExplore.exe','http://www.delphipraxis.net',nil,SW_SHOW);
end

Christian Seehase 4. Jan 2003 20:55

Moin Trebor,

ob Du der Funktion eine Konstante oder eine Variable übergibst spielt keine Rolle, nur dass Du dann statt Edit1.Text PChar(Edit1.Text) schreiben musst, da ein PChar erwartet wird (was der Compiler bei einer Konstante autmatisch erledigt)

nailor 4. Jan 2003 20:55

Ohne Garantie:

Delphi-Quellcode:
begin
ShellExecute(Handle,'open','C:\Programme\Internet Explorer\IExplore.exe','http://www.delphipraxis.net' [color=#ff0000] + Pchar(edit1.text)[/color],nil,SW_SHOW);
end

//Falls das nicht geht, mach voher eine Variable:

var temp : string;
begin
temp := 'http://www.delphipraxis.net' + edit1.text;
ShellExecute(Handle,'open','C:\Programme\Internet Explorer\IExplore.exe', temp,nil,SW_SHOW);
end

Chewie 4. Jan 2003 20:57

Der vierte Parameter (der, in dem die URL stehen muss :wink: ), ist vom Typ PChar. Die Eigenschaft Text eines TEdist ist vom Typ String. Um einen String in einen PChar umzuwandeln, benutzt man folgenden Aufruf:
Delphi-Quellcode:
PChar(Edit1.Text));
Folglich sieht das bei dir dann so aus:
Delphi-Quellcode:
ShellExecute(Handle,'C:\Programme\Internet Explorer\IExplore.exe',PChar(Edit1.Text),nil,SW_SHOW);
[EDIT]Wow, gleich drei auf einmal :wink: [/EDIT]

trebormillenium 4. Jan 2003 21:06

So habe beides getestet und habe folgendes Problem:

Der IE öffnet dann die Seite "http://www.delphipraxis.net + edit1.text" oder bei der Variante mit der Variable öffnet er die Seite "temp"
:-)
Das hatte ich nämlich vorher auch schon so ausprobiert :coder: und es klappte bei mir auch net! Hat sonst vielleicht noch einer eine Idee?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 Uhr.
Seite 2 von 4     12 34      

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