(4)ショートカットの設定&保存
ショートカット(WshShortcutオブジェクト)では、以下のようなプロパティを指定できます。
WshShortcutオブジェクトで利用可能な主なプロパティ
プロパティ | 概要 |
---|---|
TargetPath | リンク先のパス |
Arguments | 実行時のパラメータ |
Description | コメント |
Hotkey | ホットキー |
IconLocation | 表示アイコンの場所 |
WindowStyle | ウィンドウの表示方法(1:通常表示、3:最大化、7:最小化) |
WorkingDirectory | 作業フォルダ |
HotKeyプロパティは以下のような構文で指定できます。
[キー修飾子] キー名
キー修飾子は「Alt +」「Ctrl +」「Shift +」などの拡張キーを表します。キー名には、A、B...、0、1、...、F1、F2、...のようなキーを指定してください(大文字小文字は区別されません)。
ちなみに、インターネットショートカット(.urlファイル)を作成した場合には、設定できるプロパティはTargetPathプロパティだけです。その他のプロパティは指定できませんので、注意してください。
必要なプロパティを設定し終えたら、最後にSaveメソッドでショートカットを保存して完了です。先ほども述べたように、CreateShortcutメソッドではまだショートカットが保存されるわけではありませんので、注意してください。
(5)オブジェクト名を省略する方法
今回のサンプルのように、WshShortcutオブジェクトのプロパティ/メソッドに繰り返しアクセスするようなケースでは、もちろん、以下のように繰り返し「オブジェクト.プロパティ」の形式で記述しても構いません。
link.TargetPath = line(1) ' リンク先
link.Hotkey = line(2) ' ホットキー
link.Description = line(3) ' コメント
...
しかし、数が多くなれば、このような記述は冗長です。このような場合には、Withステートメントを利用しましょう。
Withステートメントを利用することで、ブロックの中で指定されたオブジェクトを略記できるようになります。これはコードがシンプルになるというだけではありません。オブジェクトの呼び出しが一箇所で行われるため、わずかでもスクリプトの実行速度を向上させることができます。
サンプルで使用しなかったプロパティ
本稿のサンプルでは使いませんでしたが、最後にIconLocation、Argumentsプロパティの使い方について、軽く補足しておきます。
表示アイコンを指定する - IconLocationプロパティ -
IconLocationプロパティは、ショートカットの表示アイコンの場所を表します。ただし、指定の方法は「アイコンを含んだファイルの絶対パス, インデックス番号」のようなちょっと変わった形式になっていますので、要注意です。たとえば、
link.IconLocation = "C:\Program Files\Internet Explorer\iexplore.exe, 12"
のように指定した場合には、iexplore.exeの中に含まれる13番目のアイコンを適用するという意味になります(インデックス番号は0で始まります)。
アイコンのインデックス番号を調べるにはいくつかの方法がありますが、比較的手軽な方法としては、ショートカットアイコンのプロパティシートから確認するという方法があります。
プロパティシートは、ショートカットアイコンを右クリックし、表示されたコンテキストメニューから[プロパティ]を選択することで、開くことができます。その[アイコンの変更...]ボタンをクリックすると、以下のような[アイコンの変更]ダイアログが開きます。
![]() |
[アイコンの変更]ダイアログ |
ここでは、iexplorer.exeに含まれるアイコンの一覧が表示されていますが、もちろん、[参照...]ボタンから違うファイルを選択することで、対応するファイルのアイコン一覧を確認することもできます。アイコンのインデックス番号は、左上から縦に0、1、...と対応します。
特にIconLocationプロパティが指定されなかった場合には、その拡張子や実行ファイルに関連づいたデフォルトのアイコンが割り当てられますので、普通は特に意識することはないと思いますが、もしも表示アイコンをカスタマイズしたいという場合のために、ちょっと知っておくと便利でしょう。
実行時のパラメータを指定する - Argumentsプロパティ -
プログラムを実行するときに、なんらかの引数(パラメータ)を指定したいということがあると思います。たとえば、Internet Explorerをアドオンなしの状態で起動したいという場合には、以下のように-extoffパラメータを指定する必要があります。
C:\Program Files\Internet Explorer\iexplore.exe -extoff
では、このようなパラメータを指定するにはどうしたらよいのでしょうか。ありがちなコードとしては、TargetPathプロパティで以下のように指定することです。
link.TargetPath = "C:\Program Files\Internet Explorer\iexplore.exe -extoff"
しかし、これは試してみれば分かるように、うまく動作しません。-extoffまでをパスの一部と見なしてしまうため、実行しても「そんなパスはありませんよ」と怒られてしまうのです。
実行時パラメータが必要な場合には、TargetPathプロパティとは別にArgumentsプロパティとして指定する必要があります。以下のようにです。
link.TargetPath = "C:\Program Files\Internet Explorer\iexplore.exe"
link.Arguments = "-extoff"
これで、正しくパラメータがパスとは区別して認識されます。
まとめ
以上、今回はショートカット(インターネットショートカット)を自動生成するサンプルについて紹介しました。たかだかショートカットですが、意外と内容は奥深いと感じたかもしれませんね。ちょっと難しいかなと思ってしまった方も、ショートカットに最低限必要な情報はリンク先だけです。最初から細部にとらわれることなく、まずは最低限のコードを理解して、とにかく活用してみましょう。 大事なのはスクリプトをどう書くかではなく、スクリプトをどう使うか、です。
山田祥寛
有限会社WINGSプロジェクト代表取締役。Microsoft MVP for ASP/ASP.NET。主な近著に「JavaScriptマスターブック」「ASP.NET AJAXプログラミング」「MySQL逆引きクイックリファレンス」(毎日 コミュニケーションズ)、「独習Java サーバサイド編」「Zend Framework徹底入門」(翔泳社)、「ASP.NET MVC実践プログラミング」(秀和システム)、「書き込み式 SQLのドリル」(ソシム)など。最近では、雑誌/サイト記事の執筆/監修から講演までを広く手掛ける毎日である。 http://www.wings.msn.to/