Autor |
Beitrag |
Jojojoxx
      
Beiträge: 386
|
Verfasst: 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
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
      
Beiträge: 76
Win 2000, Win XP Pro
Delphi 7 Architect
|
Verfasst: Mi 19.12.07 14:59
Jojojoxx 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 
      
Beiträge: 386
|
Verfasst: 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?
Quelltext 1:
| ShellExecute(Application.Handle, 'open', PChar(Parameter) , nil, nil, sw_ShowNormal); |
Danke!
mfg
Jojo
|
|
Dunkel
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: 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.
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
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 
      
Beiträge: 386
|
Verfasst: 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!  Wir kriege ich denn den Standardbrowser raus?
|
|
Dunkel
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: Mi 19.12.07 23:27
Jojojoxx 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
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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 
      
Beiträge: 386
|
Verfasst: Mi 19.12.07 23:31
Dunkel 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.
elundril hat folgendes geschrieben: | der browser is in der Registry gespeichert. |
Wo denn? 
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: 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
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
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: 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.
Dunkel hat folgendes geschrieben: | Schau Dir das mal an.
Auf die Schnelle habe ich bei mir nur den (einigermaßen verwertbaren) Schlüssel
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
      
Beiträge: 1296
Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
|
Verfasst: 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
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Do 20.12.07 11:08
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
|