![]() |
Es ist aber auch nicht gesagt, dass jeder Browser die URL einfach als Parameter akzeptiert.
|
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 |
Eine einfache Lösung für den IE:
Delphi-Quellcode:
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.
ShellExecute(0,
'opennew', // <-- ! 'http://www.delphipraxis.net', nil, nil, SW_SHOWNORMAL);
Delphi-Quellcode:
(Ungetestet aus dem Kopf geschrieben. Bitte berücksichtigen!)
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; 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:
(bitte RegEdit benutzen und die Pfadnamen im Zweifelsfall suchen)
htmlfile/shell/open/command
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. |
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:
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
"C:\PROGRA~1\INTERN~1\iexplore.exe" -nohome
![]() |
Moin Mathias,
das man den Parameter (-nohome) erst entfernen muss hab' ich auch mal gedacht. Muss aber nicht sein, funktioniert auch wenn der stehenbleibt. |
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 |
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) |
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 |
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:
Folglich sieht das bei dir dann so aus:
PChar(Edit1.Text));
Delphi-Quellcode:
[EDIT]Wow, gleich drei auf einmal :wink: [/EDIT]
ShellExecute(Handle,'C:\Programme\Internet Explorer\IExplore.exe',PChar(Edit1.Text),nil,SW_SHOW);
|
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. |
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