ローカルの(WindowsXP)環境で、アクティブなエクスプローラのウィンドウから URL や HTML を、 Perl (ActivePerl) でそのプログラム中に取り込むにはどのようにしたらよいのでしょうか。LWP, Win32::OLE などウェブで調べてみましたがわかりませんでした。ご教示いただけたら嬉しいです。
調べた限りでは Win32::OLE で以下のように出来そうだったのですがうまく行きませんでした。
use Win32::OLE qw(EVENTS in with valof);
my $IE = Win32::OLE->GetActiveObject('InternetExplorer.Application')
|| Win32::OLE->new('InternetExplorer.Application', 'Quit');
$url = $IE->{Document}->{Url};
print "URL: " . $url . "\n";
No.3ベストアンサー
- 回答日時:
>Explorer に表示された検索結果から自分のほしい部分だけを抽出・整形し、Word file などに保存できたらいいなと
特別にPerlを使わなくてはならないという理由がないなら、
javascript(JScript)を使うといいと思います。
http://support.microsoft.com/default.aspx?scid=k …
に書かれている方法で、右クリックメニューを拡張することができます。
なので、
現在開かれているWebページを右クリックして該当プログラム(ローカルに作ったHTMLファイル)で
現在開かれているWebページの全てのリンクを取り出し、クリップボードに送り込むことが可能です。
サンプル(リンクの一覧をクリップボードにコピー)LinkAllCopy.html
<SCRIPT LANGUAGE="JavaScript">
var pWin = external.menuArguments;
var pDoc = pWin.document;
var LinkList="";
for(var i=0;i<pDoc.links.length;i++){
LinkList+='<a href="' + pDoc.links[i].href + '">';
LinkList+=pDoc.links[i].innerText;
LinkList+="</a>\n";
}
window.clipboardData.setData('text',LinkList);
</SCRIPT>
-------------------------------------------------------------------
取り出したリンクをスクリプトで選別処理することも当然可能です。
ActiveScriptを使っているのであれば、SCRIPT LANGUAGE="PerlScript"を使うことも可能であると思いますが、
特にこだわりがなければ、JScriptでできると思います。
BLUEPIXY さん、ありがとうございます!Perl に特にこだわっていたわけではなく、ご教示いただいたようにしてリンクの情報を取り出すことが出来るようになり大変助かりました!!
もうひとつだけ・・
HTML の全情報を取り出す Javascript のソースをお教えいただけたらとてもうれしいです。
No.4
- 回答日時:
>HTML の全情報を取り出す Javascript のソースをお教えいただけたらとてもうれしいです。
もうひとつ意味がわからないんですが、
文字通りの意味なら、「ソースの表示」でソースを取り出せばいいような気がします。
画面上に表示されるエレメントについては(IEの場合)
docuement.ALL
から引っ張ることができます。
body部分のソースは
document.body.innerHTML
とかでとれます。
ご親切にお教えいただき本当にありがとうございました。自分でも調べてみて以下のように(ご回答のとおりですが)クリップボードに URL や Text, HTML を移すことが出来ました。
<SCRIPT LANGUAGE="JavaScript">
var pWin = external.menuArguments;
var pDoc = pWin.document;
var pBody = pDoc.body;
var Url = pDoc.URL;
var InnerHtml = pBody.innerHTML;
var InnerText = pBody.innerText;
window.clipboardData.setData('text',Url+InnerText+InnerHtml);
</SCRIPT>
これと Win32::Clipboard で思ったとおり(以上)のことができると思います。
use Win32::Clipboard;
$CLIP = Win32::Clipboard();
print "Clipboard contains: ", $CLIP->Get(), "\n";
重ね重ねご親切に感謝いたします。
No.2
- 回答日時:
多分、GetActiveObject('InternetExplorer.Application')
で現在開いているIEが捕まえられていないと思う。
my $IE = Win32::OLE->GetActiveObject('InternetExplorer.Application')
|| Win32::OLE->new('InternetExplorer.Application', 'Quit');
$url = $IE->{Document}->{Url};
print "URL: " . $url . "\n";
を
my $IE = Win32::OLE->GetActiveObject('InternetExplorer.Application');
if($IE){
$url = $IE->{Document}->{Url};
print "URL: " . $url . "\n";
}
の様にしてみて何も表示されなかったら、捕まえるのに失敗しているということでしょう。
ハッシュが表示されていたのは、newしている方のせいだと思う。
単純にnewしてURLを開いたら良いんじゃないでしょうか
この回答への補足
XP SP2 にあてられた security patch がじゃまをしているようです・・解除をトライしましたがだめでした。
マニュアルでソースをコピペするしかないのかな・・・
まったくおっしゃられるとおりで、IE を捕まえられていませんでした。IE のバージョン (6.0....) のせいなのでしょうか。IE 設定はいろいろ変えてみましたが今のところだめでした。
>単純にnewしてURLを開いたら良いんじゃないでしょうか
.pl ファイルをダブルクリックするだけで Explorer に表示された検索結果から自分のほしい部分だけを抽出・整形し、Word file などに保存できたらいいなと思っています。
No.1
- 回答日時:
どんな風にだめだったのですか?
このスクリプトをコピー・ペーストして以下のように出力されましたが・・・
D:>ActiveURL.pl
URL: http://bicniws.okweb.jp/kotaeru.php3?q=1696768
この回答への補足
返信有難うございます。
C:\>ActiveURL.pl
URL:
というように、何も返ってこないんです・・
スクリプト自体の問題ではないということですね・・
補足と質問の追加です。スクリプトを以下のようにすると、
C:\>ActiveURL.pl
Doc: HASH(0x284f50)
URL:
というのが返ってきます。ですので、Explorer にアクセスは出来ているようです。ところで、HASH(0x284f50) は展開すると HTML 情報が得られるのでしょうか。そうである場合、どのように展開したらよいのでしょうか。ご教示のほどお願いいたします。
use Win32::OLE qw(EVENTS in with valof);
my $IE = Win32::OLE->GetActiveObject('InternetExplorer.Application')
|| Win32::OLE->new('InternetExplorer.Application', 'Quit');
$doc = $IE->{Document};
$url = $doc->{Url};
print "Doc: " . $doc . "\n";
print "URL: " . $url . "\n";
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VC+ 2005】CStringは使えない...
-
VBAで#Regionに変わるものは無...
-
#ifdef多用でソースが見づらい
-
JSPの実行結果をHTMLに変換
-
レストラン、英語のメニュー表記
-
ソースの追加行数と変更行数
-
仕様書自動作成
-
実行オブジェクトからソースを...
-
Visual Source Safe?
-
「MicrosoftVisualBasic6.0 行...
-
VisualBasicがインストールされ...
-
コメントが閉じてないというエ...
-
ソースの表示を無効にする方法。
-
VB詳しい方
-
HTMLメール内のコメント
-
HTMLのソースを文字化けさせる...
-
HTMLメールを送りたい
-
HTMLからフォルダを開きたい
-
Excelで、社外秘(閲覧のみ)と...
-
一つのリンクに複数のURLを指定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
#ifdef多用でソースが見づらい
-
VBAで#Regionに変わるものは無...
-
レストラン、英語のメニュー表記
-
ソースの追加行数と変更行数
-
VisualStudio2010でデバッグソ...
-
Visual Source Safe?
-
マウスポインタが手の形になら...
-
「MicrosoftVisualBasic6.0 行...
-
HTMLソースの文字コードがutfの...
-
プログラム時のヘッダコメント...
-
【VC+ 2005】CStringは使えない...
-
jsファイルの中身を確認したい…
-
Dreamweaverのコードカラーが黒...
-
【VC++6.0(MFC)】Access Violat...
-
VisualBasicがインストールされ...
-
VB詳しい方
-
「INT86(・・・・・・);」 っ...
-
phpとaspの違い? 実力の違い?
-
c言語の改修されたソースから改...
-
VC++でマイクを使いたいんですが……
おすすめ情報