Autor Beitrag
Jojojoxx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 386



BeitragVerfasst: Di 18.12.07 13:37 
Hallo!

Ich habe einen String (Parameter), der aneinandergereiht URLs enthält, die mit einem Leerzeichen getrennt sind.
Mit dem Befehl
ausblenden Quelltext
1:
 ShellExecute(Application.Handle, 'open', PChar(Parameter) , nil, nil, sw_ShowNormal);					

möchte ich diese dann mit dem Standardbrowser (bei mir Firefox öffnen).
Wenn der String paramter beispielsweise so aussieht: www.gmx.de www.google.de
Dann öffnet Firefox nicht beide Seiten getrennt, sondern eine Seite mit der Adresse www.gmx.de%20www.google.de
Wenn ich aber per Hand ausprobiere in der Eingabeaufforderung die Adressen so zu öffnen, öffnet Firefox (wie gewünscht) 2 Tabs mit jeweils einer Seite drin. Was macht mir das Leerzeichen "kaputt"?
Danke euch!
mfg

Jojo
Zorro
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76

Win 2000, Win XP Pro
Delphi 7 Architect
BeitragVerfasst: Mi 19.12.07 14:59 
user profile iconJojojoxx hat folgendes geschrieben:
www.gmx.de%20www.google.de
Wenn ich aber per Hand ausprobiere in der Eingabeaufforderung die Adressen so zu öffnen, öffnet Firefox (wie gewünscht) 2 Tabs mit jeweils einer Seite drin. Was macht mir das Leerzeichen "kaputt"?
Danke euch!
mfg

Jojo


www.blooberry.com/in...pics/urlencoding.htm

Hier werden Sie geholfen.

Greetz
Zorro
Jojojoxx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 386



BeitragVerfasst: Mi 19.12.07 22:55 
Hi!

Danke für deine Antwort!
Ich habe mir die Seite durchgelesen.
Dort erfahre ich aber nur, dass ein Leerzeichen mit %20 kodiert wird.
Die Lösung für mein Problem, weshalb Firefox über Shellexecute das Leerzeichen zu %20 macht, und über die Eingabeaufforderung das Leerzeichen als "neuen Link" interpretiert, habe ich dort leider nicht gefunden.

Ich glaube inzwischen, dass die Funktion Shellexecute die Sonderzeichen automatisch in den jewiligen %xy Wert umändert, was bei mir den nicht gewünschten Nebeneffekt herbeiführt. Oder ist es die Umwandlung von String in PChar?
ausblenden Quelltext
1:
ShellExecute(Application.Handle, 'open', PChar(Parameter) , nil, nil, sw_ShowNormal);					


Danke!
mfg

Jojo
Dunkel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 682

Mac OS X Snow Leopard
Xcode 3.1
BeitragVerfasst: Mi 19.12.07 23:11 
Hallo!

Ich hab es jetzt nicht ausprobiert, aber versuch doch mal, die einzelnen Parameter in Anführungszeichen einzuschließen.
ausblenden Quelltext
1:
"www.gmx.de" "www.google.de"					


Ist kein Allheilmittel, aber das könnte den Feuerfuchs schon dazu veranlassen, die beiden URL nicht als eine URL zu interpretieren.

Edit:
ich hab's doch mal ausprobiert. Das hier
ausblenden Delphi-Quelltext
1:
ShellExecute(Application.Handle, 'open', PChar('C:\Programme\Mozilla Firefox\Firefox.exe'), PChar('"www.google.de" "www.web.de"'), nil, sw_showNormal);					

funktioniert bei mir einwandfrei.

Edit die Zweite:
...auch ohne Anführungszeichen.


Edit zum Dritten:
Achso, jetzt weiß ich, was Du meinst. :?
Nee, das wird so wohl nicht gehen. Hol Dir aus der Registry den Standardbrowser und mach es so wie ich oben. Alternativ kannst Du auch mehrmals hintereinander, mit unterschiedlichen URLs, ShellExecute aufrufen.

_________________
Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
Jojojoxx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 386



BeitragVerfasst: Mi 19.12.07 23:26 
Hi!

Ich sehe grade, ich habe die Parameter dort eingesetzt, wo du die Exe vom Firefox drin hast.
Wenn ich jetzt noch rauskriegen würde, wie man die Adresse des Standardbrowsers / von Firefox rauskriegt, dann wär mein Problem gelöst! :)

edit: Wegen deinem 3. edit! :D Wir kriege ich denn den Standardbrowser raus?
Dunkel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 682

Mac OS X Snow Leopard
Xcode 3.1
BeitragVerfasst: Mi 19.12.07 23:27 
user profile iconJojojoxx hat folgendes geschrieben:
Hi!

Ich sehe grade, ich habe die Parameter dort eingesetzt, wo du die Exe vom Firefox drin hast.
Wenn ich jetzt noch rauskriegen würde, wie man die Adresse des Standardbrowsers / von Firefox rauskriegt, dann wär mein Problem gelöst! :)

Siehe mein Edit! Einfach ShellExecute mehrmals, mit nur jeweils einer URL, aufrufen.

_________________
Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mi 19.12.07 23:28 
der browser is in der Registry gespeichert.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Jojojoxx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 386



BeitragVerfasst: Mi 19.12.07 23:31 
user profile iconDunkel hat folgendes geschrieben:

Siehe mein Edit! Einfach ShellExecute mehrmals, mit nur jeweils einer URL, aufrufen.

Das klappt nur dann korrekt, wenn Firefox so eingestellt ist, dass neue Links in Tabs geöffnet werden sollen. Sonst werden mehrere Fenster aufgemacht.



user profile iconelundril hat folgendes geschrieben:
der browser is in der Registry gespeichert.

Wo denn? :)
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mi 19.12.07 23:33 
Start->Ausführen-> RegEdit->Nach Firefox suchen. So genau weiß ich das auch nicht, sorry!

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Dunkel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 682

Mac OS X Snow Leopard
Xcode 3.1
BeitragVerfasst: Do 20.12.07 00:00 
Schau Dir das mal an.

Auf die Schnelle habe ich bei mir nur den (einigermaßen verwertbaren) Schlüssel
ausblenden Quelltext
1:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\OpenWithList					

gefunden. Alle anderen verweisen auf Programm-GUIDs; deren Pfade zurückzuverfolgen war mir jetzt ein wenig zu aufwändig.

Frag mal Onkel Google, vielleicht weiß er mehr.

_________________
Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Do 20.12.07 00:54 
Zuerstmal zu Jojojoxx. Das was der Browser macht ist korrekt. Schuld ist hier auf keinen Fall ShellExecute, denn die öffnet nur die Datei. Allerdings muß man verstehen wie Shellexecute arbeitet. Wird eine ausführbare Datei, also Programm angegeben, dann wird das Programm geöffnet. Wird eine nicht ausführbare Datei mit Shellexecute geöffnet, dann prüft ShelExecute zuerst die Dateiendung. Da aber inzwischen auch Leerzeichen in Dateinamen möglich sind, sieht Shelexecute den ganzen String als eine Datei an mit der Endung Html. Also wird das Programm zu den Dateityp geöffnet und der String als Parameter übergeben. Der Browser sieht es nur als ein Parameter an und ergänzt die Leerzeichen mit %20.

Hier läuft also alles korrekt ab. Du mußt zwischen der Eingabe in die Adressenzeile und Programm-Parametern unterscheiden. Mit Programm-Parametern wird das programm gestartet. Das andere ist ein Eingabefeld innerhalb des Programms. Die Frage ista also was der Browser macht, trennt er die beiden Links oder sieht er es als nur einen Link an.



user profile iconDunkel hat folgendes geschrieben:
Schau Dir das mal an.

Auf die Schnelle habe ich bei mir nur den (einigermaßen verwertbaren) Schlüssel
ausblenden Quelltext
1:
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.htmlOpenWithList					

gefunden. Alle anderen verweisen auf Programm-GUIDs; deren Pfade zurückzuverfolgen war mir jetzt ein wenig zu aufwändig.

Frag mal Onkel Google, vielleicht weiß er mehr.


Ich garantiere dir, daß das nicht der Pfad ist. Mir fällt jetzt der korrekte Pfad nicht ein, aber dieser ist es nicht.

_________________
Popov
Wolle92
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: Do 20.12.07 10:17 
Nicht verwunderlich, in der OpenWithList werden die Programme gespeichert, die angezeigt werden, wenn man einen Rechtsklick auf ein Datei macht und dann auf "Öffnen mit" klickt...

Wo sich das Standard-Zugriffsprogramm versteckt, such ich grad noch, zumindest nicht in HKEY_CLASSES_ROOT\http was meine erste Vermutung war, da steht IE-Explorer drin, mein Standard ist aber Firefox...

_________________
1405006117752879898543142606244511569936384000000000.
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Do 20.12.07 11:08 
Hallo,

der Artikel dürfte interresant sein:
msdn Deutschland: Wie finde ich den Standard-Browser?

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )