こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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)を開く処理
}

よろしくお願いします。

投稿日時 - 2009-07-31 13:15:42

QNo.5170399

すぐに回答ほしいです

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

Win32::FileOpが標準モジュールか忘れましたが、それを使えばプロンプトも開きません。

use Win32::FileOp qw(ShellExecute);

$url = "http://okwave.jp/";
ShellExecute($url);

投稿日時 - 2009-08-07 00:25:06

お礼

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

投稿日時 - 2009-08-07 21:38:41

ANo.3

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

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

投稿日時 - 2009-08-07 00:29:33

お礼

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

投稿日時 - 2009-08-07 21:41:08

ANo.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));

投稿日時 - 2009-08-03 22:45:04

お礼

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

投稿日時 - 2009-08-07 21:37:22

ANo.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;

投稿日時 - 2009-07-31 19:45:33

お礼

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

投稿日時 - 2009-08-01 04:49:59

あなたにオススメの質問