Name

Froschpopo the one and only!

Aufgabe

Wir möchten unter Windows, in Perl/Tk einen Standardbrowser starten ohne dass die GUI einfriert.

Das Problem

- Durch den Aufruf von 'start $url' öffnet sich ein neues DOS-Fenster. - Beim Aufruf von system() friert die GUI ein, da sie auf eine Rückgabe von system() wartet.

Die Lösung

Wir ermitteln mit Hilfe der Registry den Standardbrowser und starten den Systemcall in einem Hintergrundprozess.
use Proc::Background;
use Win32::TieRegistry;

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

GotoUrl('http://test.net');

sub GotoUrl
{
   my $browser_path = $reg_key->{""};
   my ($prog) = $browser_path =~ /^"/ ? $browser_path =~ m/"(.*?)"/ : split(/\s/,$browser_path);
   my $proc1 = Proc::Background->new($prog, $_[0]);
}

Ergänzungen, Kommentare

PlTk - 10 Jan 2006 - allgemeine Lösung

WWWBrowser.pm stellt eine allgemeinere Methode, die auch auf anderen Betriebssystemen funktioniert, zur Verfügung.

Kommentare werden am besten in folgender Form vorgenommen, damit sie im Inhaltsverzeichnis angezeigt werden (natürlich ohne das <verbatim>):
---### Main.??? - 14 Jul 2003 - Betreff

UtilPerlSkripteSubForm edit

Titel Wie starte ich in Perl/Tk einen Standardbrowser? (Windows)
Autor LucasMengel
Bereich PerlSkripteTk
Topic revision: 2006-05-06, TinaMueller
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.