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”のプロパティを開いてみると次のように指定されている。
このように新しいショートカットを作って新しいプロパティ値を設定することも可能だが、既存のショートカットのプロパティを設定する場合はCreateShortcutメソッドの引数に既存のショートカットファイル(*.lnk)のパスを渡し、そのプロパティを変更してから、Saveメソッドを実行する。なお、単にプロパティ設定を取得するならばSaveメソッドを実行する必要はない。
Copyright© Digital Advantage Corp. All Rights Reserved.