豊田 孝

 第15回では,ショートカット・オブジェクトが専用データベースを持っていることを紹介するとともに,データベースから一部データを読み出してみました。前回は,ショートカット・データベースにデータを書き込むサンプル・プログラムを紹介いたしました。本日は,ショートカットを作成し,その専用データベースに必要情報を書き込む10行サンプル・プログラムを紹介いたします。本稿を読み終えれば,目的のシェル名前空間内部に,自由にショートカット・オブジェクトを作成できる知識が身に付きます。それではさっそく始めましょう。

ショートカット・オブジェクトの作成

 「ショートカットとは何か?」と改めて考えてみると,多くの人は回答に迷ってしまうのではないかと思います。前回紹介した「管理ツール」名前空間内に作成されているショートカットなどは,目的のアプリケーションを効率的に起動できるようにしてくれるだけではなく,私たちがそのツールを使用する上で知っていると便利な,機能概要情報も提供してくれていました。そこで本日は,Windows環境に標準で用意されている「メモ帳」へのショートカットを作成し,そのショートカットのデータベースに簡単な文字列を書き込む10行サンプル・プログラムを作成してみましょう。VBScriptコードでは次のようになります。


'*********************************************************
'プログラム行数 = 9
'機能:ショートカット・オブジェクトの作成
'コピー・アンド・ペースト後,
'No17CreateShortCut.vbsとして保存する
'*********************************************************

Dim oShellScript, oSpecialFolders, strShortCutPlace, oShortCut
Set oShellScript = CreateObject("WScript.Shell.1")
Set oSpecialFolders = oShellScript.SpecialFolders
strShortCutPlace = oSpecialFolders.Item(4)
Set oShortCut = oShellScript.CreateShortCut
                (strShortCutPlace & "\第17回連載vbs.lnk")
oShortCut.TargetPath = "%SystemRoot%\system32\notepad.exe"
oShortCut.Description = "第17回連載サンプル・プログラム"
oShortCut.Save
WScript.Echo oShortCut.TargetPath + " : " + oShortCut.Description
対応するJScriptコードは次の通りです。

/*
'*********************************************************
'プログラム行数 = 8
'機能:ショートカット・オブジェクトの作成
'コピー・アンド・ペースト後,
'No17CreateShortCut.jsとして保存する
'*********************************************************
*/

var oShellScript = new ActiveXObject("WScript.Shell.1");
var oSpecialFolders = oShellScript.SpecialFolders;
var strShortCutPlace = oSpecialFolders.Item(4);
var oShortCut = oShellScript.CreateShortCut
                (strShortCutPlace + "\\第17回連載js.lnk");
oShortCut.TargetPath = "%SystemRoot%\\system32\\notepad.exe";
oShortCut.Description = "第17回連載サンプル・プログラム";
oShortCut.Save();
WScript.Echo (oShortCut.TargetPath + " : " + oShortCut.Description);
図1●10行サンプル・プログラムの実行結果
プログラムの機能概要を説明する前に,実行画面をまず示しておきましょう(図1[拡大表示])。この画面は,次のコードが正常に実行されたことを示しています。

WScript.Echo oShortCut.TargetPath + " : " + oShortCut.Description

 表示されている情報から分かるように,「oShortCut.TargetPath」は作成されたショートカットのリンク先情報であり,「oShortCut.Description」はショートカット・オブジェクトの簡単な説明情報です。それでは,この10行プログラムの特徴的な機能を説明しておきましょう。

ショートカット・オブジェクトとシェル名前空間の関係

 自分独自のショートカットを作成する場合,多くの人はそのショートカットをデスクトップ上に作成していることと思います。しかし,本連載をここまでお読みいただいている皆さんは,デスクトップはシェル名前空間の一つであることをすでに知っていることでしょう。言い換えると「ショートカットをデスクトップ上に作成する」という表現は,私たちにとっては「ショートカットをデスクトップ名前空間内に作成する」ということを意味することが理解できますね。10行プログラム内では,この意味は次のような2行のコードとして記述されています。

・strShortCutPlace = oSpecialFolders.Item(4)
・Set oShortCut = oShellScript.CreateShortCut(strShortCutPlace & "\第17回連載vbs.lnk")

図2●「No17NewNameSpaces.vbs」補助プログラムの実行結果
 最初のコードにはoSpecialFolders.Item(4)という具合に,数値の「4」が使われています。これはコードから想像できるように,対応する数値を指定するだけで目的の名前空間を選択し,その空間内部にショートカットを作成できることを示唆しています。数値と名前空間の対応関係については,本日の補助プログラム「No17NewNameSpaces.vbs」(ダウンロードはこちら)を実行してみてください。この補助プログラムを実行すると,図2[拡大表示]のような情報が表示されます。

 今回は詳細説明を割愛しますが,ここに表示されている数値と名前空間の対応情報は,第9回で紹介した補助プログラム「No9ListNameSpaces.exe」が表示する情報とまったく異なります。結論を言ってしまえば,相談を持ちかける相談相手が異なっているのです。

 この画面情報を見ると,数値「4」に対応する名前空間はデスクトップであることが分かります。つまり,最初のコードのoSpecialFolders.Item(4)は,ショートカットを作成する名前空間としてデスクトップを指定しているわけです。これでショートカットを作成する名前空間が決まりましたから,次の作業はショートカットを作成することです。この作業を担当しているのが,第2のコードのCreateShortCutメソッドです。このメソッドの使い方はソース・コードを参考にしてください。ただし,ショートカットは“特殊フォルダ内のファイル”という性格を持っていますから,拡張子として「.lnk」を記述するようにしてください。また,作成されたショートカット・オブジェクトが持つデータベースへの書き込み方についても,ソース・コードを参照し,いろいろ値を変更してみてください。例えば,oSpecialFolders.Item(4)の数値「4」に,スタートアップ名前空間の対応数値「14」を設定し,その後コンピュータを再起動してみてください。

10行サンプル・プログラムの応用例

 本日の第2補助プログラム「No17CreateShortCut.exe」を紹介しておきます(ダウンロードはこちら)。この補助プログラムは,シェル名前空間とショートカット・オブジェクトの活用例として作成しました。このプログラムは次のような機能を実装しています。

・フォルダ作成機能
・ファイル作成機能
・「お気に入り」名前空間内部へのショートカット作成機能

 お時間のあるときに,ぜひ実行してみてください。すべての機能はこれまでの連載で紹介したものばかりです。一部の機能を忘れてしまった場合には,ぜひ関連する記事を繰り返し読んでください。本連載で紹介している知識は知っておいても決して損にはなりません。

次回予告

 マイクロソフトは,2001年9月7日に日本語版Windows XP製品開発完了を宣言するとともに,2001年11月16日に発売される製品の推定小売価格を発表いたしました(詳細はこちらを参照)。この発表を受け,本連載は今回でひとまず終了として,次回からはこれまでの基本姿勢を維持しつつ,補助プログラムを使って,Windows XPの新機能をどのように使いこなすかを解説していきたいと思います。Windows XPの「XP」は,エクスペリエンス(eXPerience)といわれます。マイクロソフトの考えるエクペリエンスとはいったい何なのでしょう。Windows XPを使用することにより,私たちはどのようなメリットを享受できるのでしょう。このようなことを皆様とご一緒に考えてみたいと思います。お楽しみに。それではまた,お会いいたしましょう。