• ベストアンサー

Perl/TkでURLを既定のブラウザで開く方法

Perl/TkでGUIプログラミングをしております。 プログラム中のButtonを押した時に自分のパソコンに設定している 既定のブラウザでWEBサイトを開くにはどうすればいいでしょうか? イメージは下記のような感じです。 use Tk; use Encode; $url = "http://okwave.jp/"; $main->Button(-text=>decode("cp932","URLを開く"),-font => ["MS ゴシック", 12], -command => \&open_url) ->grid(-row=>0,-column=>0); sub open_url{ # 既定のブラウザでURL($url)を開く処理 } よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • SE-1
  • ベストアンサー率57% (26/45)
回答No.3

Win32::FileOpが標準モジュールか忘れましたが、それを使えばプロンプトも開きません。 use Win32::FileOp qw(ShellExecute); $url = "http://okwave.jp/"; ShellExecute($url);

xkuonx
質問者

お礼

標準モジュールでは無かったので ppm install Win32-FileOp にてインストール後、上記ソースで目的を達成できました。 ありがとうございます。

その他の回答 (3)

  • SE-1
  • ベストアンサー率57% (26/45)
回答No.4

コマンドプトンプト、一瞬開きますね・・・。すみません。

xkuonx
質問者

お礼

書き忘れていて申し訳ないのですが、私の環境では コマンドプロンプトが表示される事なくWEBページを開けました。 OS:Windows XP Pro SP3 Perl:Active Perl v5.8.6 build 811

回答No.2

#!/usr/bin/perl use warnings; use strict; # 方法 2 jscript か vbscriptを使う。 # ただし、jscript か vbscript のスクリプトファイルを # 別途用意する必要がある。 my $uri = shift || 'http://google.co.jp'; my $jscript = shift || 'foo.js'; my $cmd = 'cscript.exe'; my $option = '//nologo'; open( my $ph, '-|', $cmd, $option, $jscript, $uri ) or die "$cmd:$!"; close $ph or die "$cmd:$!"; foo.js の 中身 WScript.CreateObject("WScript.Shell").Run(WScript.Arguments.Item(0));

xkuonx
質問者

お礼

jscriptかvbscriptで出来るようなのを見つけていました。 perlでの使い方を教示頂きありがとうございます。 別途ファイルが必要という事だったので、 今回は見送らせて頂きます。 機会があれば使わせて頂きますね。

回答No.1

#!/usr/bin/perl use strict; use warnings; # Windows 限定 my $uri = shift || 'http://google.co.jp'; my $cmd = 'cmd.exe /c start ' . $uri; system $cmd;

xkuonx
質問者

お礼

ありがとうございます。 上記方法で目的を達成できました。 一瞬コマンドプロンプトが表示されますが… これを表示しないようにするのは少し手間かかるみたいですね。

関連するQ&A