第14回 WshShellオブジェクトを利用する(3)基礎解説 演習方式で身につけるチェック式WSH超入門(2/4 ページ)

» 2007年12月27日 00時00分 公開

ショートカットを作成するCreateShortcutメソッド/WshShortcutオブジェクト/WshUrlShortcutオブジェクト

 WshShellオブジェクトのCreateShortcutメソッドを使うと、引数に与えた任意のパスにショートカット(*.lnk)やURLショートカット(*.url、Internet Explorerの「お気に入り」のファイル)を新規に作ったり、既存のショートカットの情報を取得したりできる。CreateShortcutメソッドでは戻り値としてWshShortcutオブジェクト(*.lnkの場合)もしくはWshUrlShortcutオブジェクト(*.urlの場合)が返され、これらのオブジェクトの各種プロパティを取得することでショートカットの情報が得られ、あるいは各種プロパティを設定して最後にSaveメソッドを呼ぶことでショートカットを更新(新規作成)できる。実際にコードを見てみよう。

Option Explicit

Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")

Dim objShortcut
Set objShortcut = objWshShell.CreateShortcut("メモ帳.lnk") 'メモ帳.lnkのショートカットを取得
objShortcut.TargetPath = "C:\Windows\System32\notepad.exe" '起動パスにnotepad.exeのフルパスを指定
objShortcut.Save 'ショートカットを保存(新規作成)

Set objShortcut = Nothing
Set objWshShell = Nothing

 このスクリプトを実行すると、カレント・ディレクトリ(通常はスクリプトが存在するディレクトリ)に「メモ帳.lnk」というnotepad.exeファイル(メモ帳の実体)へのショートカットが作られる。

 URLショートカットを作る場合は以下のようにする。

Option Explicit

Const REG_FAVORITES = _
    "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Favorites"

Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")

'URLショートカットを作成
Dim objShortcut
Set objShortcut = objWshShell.CreateShortcut(objWshShell.RegRead(REG_FAVORITES) & "\WSHを始めよう − @IT.lnk")

'リンク先にURLを指定
objShortcut.TargetPath = "http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh01/cformwsh01_01.html"
objShortcut.Save 'ショートカットを保存(新規作成)

Set objShortcut = Nothing
Set objWshShell = Nothing

 ここでは、第13回のテクニックを応用し、お気に入りフォルダにURLショートカット(*.url)を作成している。TargetPathにはURLを指定している。

 ポイントとなるのは、CreateShortcutメソッドにパス(フルパスでも相対パスでもよい)を引数に指定すると(ファイルが存在していてもしていなくても)、拡張子が.lnkの場合はWshShortcutオブジェクトが作られ、拡張子が.urlの場合はWshUrlShortcutオブジェクトが作られる点である。CreateShortcut メソッドの実行によりWshShortcutあるいはWshUrlShortcutオブジェクトが作られるが、まだショートカットファイルが存在していないので、ショートカットがリンクとして機能するための最低限のプロパティTargetPath(リンク先パス)プロパティを設定している。そしてその変更を反映し、ショートカットを実際に作成するためにSaveメソッドを呼んでいる。以上がCreateShortcutメソッドの基本的な使い方である。WshShortcutオブジェクトおよびWshUrlShortcutオブジェクトには次のようなプロパティがある。

WshShortcutオブジェクトのプロパティ 意味
Arguments ショートカットの引数
Description コメント
FullName ショートカット(*.lnk)の絶対パス(読み取り専用)
HotKey ショートカット・キー
IconLocation アイコン・ファイルのパスとアイコン・インデックス
RelativePath ショートカットの相対パス(未実装のため呼び出してもエラーになる)
TargetPath ショートカットのリンク先パス
WindowStyle 実行時のウィンドウ・スタイル:1=通常、2=最大化、7=最小化
WorkingDirectory 作業フォルダ
WshUrlShortcutオブジェクトのプロパティ 意味
FullName URLショートカット(*.url)の絶対パス(読み取り専用)
TargetPath ショートカットのリンク先パス
WshShortcutとWshUrlShortcutオブジェクトのプロパティ

 例えば、デスクトップにコマンド・プロンプトのショートカットを作るには次のようにする。

Option Explicit

Const REG_DESKTOP = _
    "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Desktop"

Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")

Dim objShortcut
Set objShortcut = objWshShell.CreateShortcut(objWshShell.RegRead(REG_DESKTOP) & _
"\コマンド・プロンプト.lnk") 'コマンド・プロンプト.lnkのショートカットを取得
With objShortcut
    .TargetPath = "cmd.exe" '起動パスにcmd.exeのパスを指定
    .HotKey = "Ctrl+Alt+C" 'ホットキー(このキーを押すと立ち上がる)
    .Arguments = "/k date /t" '引数(dateコマンドを実行し継続)
    .Description = "コマンド・プロンプトを立ち上げます。" 'コメント
    .WorkingDirectory = "C:\" '作業ディレクトリ=初期カレント・ディレクトリ
    .IconLocation = "shell32.dll,41" 'アイコンの位置。木のアイコン
    .WindowStyle = 7 '最小化
    .Save 'ショートカットを保存(新規作成)
End With

Set objShortcut = Nothing
Set objWshShell = Nothing

 各プロパティの意味は実行してみるとよく分かるだろう。デスクトップにできた“コマンド・プロンプト.lnk”のプロパティを開いてみると次のように指定されている。

コマンド・プロンプトのショートカット
リンク先、作業フォルダなどのプロパティ値が設定されていることに注目。
  (1)これらのプロパティ値を設定した。

 このように新しいショートカットを作って新しいプロパティ値を設定することも可能だが、既存のショートカットのプロパティを設定する場合はCreateShortcutメソッドの引数に既存のショートカットファイル(*.lnk)のパスを渡し、そのプロパティを変更してから、Saveメソッドを実行する。なお、単にプロパティ設定を取得するならばSaveメソッドを実行する必要はない。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。