Schrift
[thread]6986[/thread]

Standardbrowser



<< |< 1 2 3 4 >| >> 34 Einträge, 4 Seiten
Froschpopo
 2005-05-12 01:55
#54803 #54803
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ich hab ne funktion erstellt mit der man nen standard-browser starten kann.
Dies mache ich folgendermaßen:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use strict;
use Win32::TieRegistry;

$Registry->Delimiter("/");
our $reg_key = $Registry->
{
"HKEY_LOCAL_MACHINE/SOFTWARE/Classes/HTTP/shell/open/command"
};

GotoUrl("http://www.perl-community.de");

sub GotoUrl
{
my $browser_path = $reg_key->{""};
$browser_path =~ m/"(.*)"/;
system("$1 $_[0]");
}

Das funktioniert mit Opera und Internet Explorer.
Die Schlüssel der beiden Browser sehen so aus:

Internet Explorer: "C:\Programme\Internet Explorer\iexplore.exe" -nohome

Opera: "C:\Programme\Opera\Opera.exe"

Die beiden Browser funktionieren einwandfrei.

Jetzt hab ich aber mal Firefox installiert um es mit ihm zu testen, und der hat allerdings jetzt folgenden Startparameter-Syntax:

Firefox: C:\PROGRA~1\MOZILL~1\FIREFOX.EXE -url "%1"

Dieser Programmstart-Syntax kommt wiederrum nicht mit meiner Funktion GotoUrl() (siehe oben) klar.

Gibt es eine gemeinsamkeit bei allen Browser-Starts? Ich kann ja nicht für jeden Browser ne eigene Funktion schreiben. Dann muss ich ja meine ganze Software zurückrufen die ich mittlerweile schon zum download angeboten hab, sobald ein neuer Browser auf dem Markt erscheint und das ist ja schon fast halbjährlich der Fall.

Was fällt euch Spezialisten denn dazu ein?
ptk
 2005-05-12 12:57
#54804 #54804
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Guck doch einfach nach, ob %1 vorkommt. Wenn ja, ersetzt du das mit der URL, ansonsten haengst du sie an.

Ich habe in Win32Util.pm folgenden Snippet fuer die Ersetzung:
Code: (dl )
1
2
3
4
5
6
7
8
        my %arg_used;
$argstr =~ s/(%(\d))/ $arg_used{$2-1}=1; defined($args[$2-1]) ? $args[$2-1] : "" /eg;
$cmdline .= " $argstr";
for my $i (0 .. $#args) {
if (!$arg_used{$i}) {
$cmdline .= " $args[$i]";
}
}
J-jayz-Z
 2005-05-12 13:53
#54805 #54805
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Jo, Firefox startest du einfach mit
Code: (dl )
./mozilla-firefox http://www.pörl-community.de

zumindest unter Linux. Unter Windows wird das genauso sein...
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
Crian
 2005-05-12 14:07
#54806 #54806
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Reicht es nicht, einfach per cmd oder start die url abzuschicken? Sollte er dann nicht den Standardbrowser starten?\n\n

<!--EDIT|Crian|1115895679-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Froschpopo
 2005-05-12 14:51
#54807 #54807
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
[quote=J-jayz-Z,12.05.2005, 11:53]Jo, Firefox startest du einfach mit
Code: (dl )
./mozilla-firefox http://www.pörl-community.de

zumindest unter Linux. Unter Windows wird das genauso sein...[/quote]
unter windows ganz sicher nicht... wie du ja oben gesehen hast arbeite ich in diesem fall mit windows.

start kann man vergessen, da start eine eigene konsole öffnet bzw ein neues fenster wenn ich in Tk arbeite.

Icch will hier keinen regex haben der mir das script für den firefox kompatibel macht, ich möchte etwas haben was mit jedem browser funktioniert !

den firefox kann man übrigens auch so aufrufen:
Code: (dl )
 C:\PROGRA~1\MOZILL~1\FIREFOX.EXE http://perl.de

allerdings parst mein script oben nur den pfad in anführungszeichen, also müsste es heißen:
Code: (dl )
"C:\PROGRA~1\MOZILL~1\FIREFOX.EXE" -url "%1"

tut es aber nicht! deshalb springt mein script auch nicht auf den registry-eintrag von firefox an!
renee
 2005-05-12 15:02
#54808 #54808
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Und wenn Du sowas machst:
Code: (dl )
1
2
3
4
5
6
sub GotoUrl
{
my $browser_path = $reg_key->{""};
my ($prog) = $browser_path =~ /^"/ ? $browser_path =~ m/"(.*?)"/ : split(/\s/,$browser_path);
system("$1 $_[0]");
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Crian
 2005-05-12 15:03
#54809 #54809
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
[quote=Froschpopo,12.05.2005, 12:51]Icch will hier keinen regex haben der mir das script für den firefox kompatibel macht, ich möchte etwas haben was mit jedem browser funktioniert ![/quote]
Genau das macht doch der Ansatz von ptk, wenn ich den richtig verstehe.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
pKai
 2005-05-12 15:14
#54810 #54810
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
[quote=Froschpopo,12.May.2005, 12:51]allerdings parst mein script oben nur den pfad in anführungszeichen, also müsste es heißen:
...[/quote]
Ja, und das ist Schmarrn. Bei mir (XPpro) isteht in dem bewussten Key: '"C:\Program Files\Internet Explorer\iexplore.exe" -nohome' und dein Skript stellt nur lapidar fest, dass "C:\Program" nix ausführbares ist...
Was da in dem Key steht ist so eine Art einzeiliges Batchfile, daher kann die Syntax entsprechend variieren, ja nach dem, wie das betreffende Programm sich dort einträgt.
Was bei mir problemlos funktioniert ist eine GotoUrl in der folgenden Form.

Quote
sub GotoUrl {
my $call = $reg_key->{""};
system("$call $_[0]");
}

Warum der IE überhaupt keine Argumentvariable im Key hat ist mir unklar.
Die Lösung von ptk, die Batchvariablenersetzung selbst durchzuführen und nicht gesetzte Positionsparameter anzuhängen dürfte trotz des Restes an Heuristic das richtige sein. ;)
I sense a soul in search of answers.
GwenDragon
 2005-05-12 15:23
#54811 #54811
User since
2005-01-17
14544 Artikel
Admin1
[Homepage]
user image
[quote=pKai,12.05.2005, 13:14]Warum der IE überhaupt keine Argumentvariable im Key hat ist mir unklar.[/quote]
Ganz einfach, weil der Rest unter http\shell\open\ddeexec\... steht.\n\n

<!--EDIT|GwenDragon|1115897253-->
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

pKai
 2005-05-12 16:12
#54812 #54812
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Ah ja, stimmt, er benutzt DDE.
D. h. er schaut erstmal, ob ein Client (IE) bereits läuft und wenn ja schickt er ihm die entsprechenden Argumente (ddeexec). Wenn keiner läuft startet er einen (command) und schickt dem dann die Argumente.
Das bedeutet also, dass sich diese Art Lösung hier auch gegenüber der "system qq(start $url)" (die (mit dem IE zumindest) DDE macht, was man daran erkennt, dass ein offener IE ge-hijacked wird) unterscheidet.
I sense a soul in search of answers.
<< |< 1 2 3 4 >| >> 34 Einträge, 4 Seiten



View all threads created 2005-05-12 01:55.