Hey, Scripting Guy!

Hey, Scripting Guy!

新しい TechNet コラムへようこそ。このコラムでは、よく寄せられるシステム管理スクリプトに関する質問に Scripting Guys がお答えします。システム管理スクリプトについて質問がある場合は、scripter@microsoft.com (英語のみ) までお送りください。すべての質問に回答することはできないかもしれませんが、可能な限り対応いたします。

今日の質問 : クリップボードから URL を取得し、その Web サイトをブラウザで開く方法はありますか


クリップボードから URL を取得し、その Web サイトをブラウザで開く方法はありますか

Q

Hey, Scripting Guy! クリップボードから URL を取得し、その Web サイトをブラウザで開く方法はありますか。

-- CL

A

CL さん、こんにちは。おもしろい質問ですが、今回は一度に 2 つの質問を受けたようなものです。というのも、この質問には 2 つの問題が含まれているからです。1 つ目の問題は簡単です。スクリプトを使用して Web サイトを開くことができるかという質問です。言うまでもないと思いますが、答えは間違いなく "できる" です。ここで紹介するサンプル スクリプトは、まずスクリプト センターの URL を変数 strURL に格納します。さらに、WSH Shell オブジェクトのインスタンスを作成し、Run メソッドを使用して既定の Web ブラウザを開き、指定された URL にアクセスします。

strURL = “http://www.microsoft.com/technet/scriptcenter/default.mspx”
Set objShell = CreateObject("Wscript.Shell")
objShell.Run(strURL)

2 つ目の質問は少し込み入っています。スクリプトを使用してクリップボードから情報を取得できるかということですが、結論から言うと、この質問の答えも "できる" です。ただし、クリップボードには裏口からアクセスする必要があります。

WSH と VBScript のいずれにもクリップボードを操作する機能はありません。どちらを使用しても、クリップボードにデータをコピーしたりクリップボードからデータを貼り付けたりすることはできません。一方、Internet Explorer ではクリップボードを操作することができます (そうです。Internet Explorer は何でもできるのです)。そこで、この操作を Internet Explorer にやってもらうことにします。クリップボードからデータを取得するには、次のようなコードを使用します。

Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
strURL = objIE.document.parentwindow.clipboardData.GetData("text")
objIE.Quit
Wscript.Echo strURL

このコードでは、Internet Explorer のインスタンスを作成し、それを空白のページとして開いています。ただし、このインスタンスは実際には表示されません。Visible を TRUE に設定していないからです。すべての処理がバックグラウンドで実行されます。

次に、clipboardData.GetData メソッドを使用してクリップボードからテキストを取得し、変数 strURL に格納します。この処理は次のコードが実行します。

strURL = objIE.document.parentwindow.clipboardData.GetData("text")

Internet Explorer のインスタンス (objIE.Quit) を解放し、クリップボードから取得した値を Echo 出力します。

実際に試してみてください。クリップボードにテキストをコピーし、このスクリプトを実行すると、クリップボードにコピーしたテキストを表示するメッセージ ボックスが開きます。

ここで、上に挙げた 2 つのコードを結合し、1 つのスクリプトを完成させます。クリップボードから URL を取得し、その Web サイトを既定の Web ブラウザで開くスクリプトは、次のようになります。

Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
strURL = objIE.document.parentwindow.clipboardData.GetData("text")
objIE.Quit

Set objShell = CreateObject("Wscript.Shell")
objShell.Run(strURL)

悪くないスクリプトができたと思いませんか。そのうえ、このスクリプトには付加価値とも言うべきものがあり、Web サイトを開くことだけに機能が限定されているわけではありません。クリップボードに C:\Scripts\ScriptLog.txt のようなファイル パスがある場合、このスクリプトを実行すると、このファイルがメモ帳 (または .txt ファイルに関連付けられた他のアプリケーション) で開きます。クリップボードに .doc ファイルのパスがある場合は、このスクリプトを実行することにより、そのドキュメントが Microsoft Word で開きます。このスクリプトは、Web サイトだけを開くスクリプトというよりも、汎用的なファイル オープン スクリプトといえます。


関連情報

Hey, Scripting Guy! - アーカイブ もチェックしてください。

ページのトップへページのトップへ