【3/18〜】Amazon、VMwareが語る『クラウドの未来』 スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
   

運用 Windows管理者のためのWindows Script Host入門
第6回 WshShellオブジェクトの詳細(2)

3.ショートカットの作成
―― CreateShortcutメソッド ――

海津智宏
2004/09/17

ショートカットの作成
―― CreateShortcutメソッド ――

CreateShortcutメソッド(WSHリファレンス)

 周知のとおりWindowsでは、ファイルやフォルダ、Webページに対してショートカットを作成し、それらをさまざまな場所に配置することで、頻繁にアクセスするファイルやWebページに素早くアクセスできるようにすることができる。デスクトップなどに置かれるショートカット以外にも、スタートメニューやタスク・バーのクイックランチ、ファイルを右クリックした際の「送る」メニューへの登録など、ショートカットは幅広く使われている。CreateShortcutメソッドを利用すれば、WSHスクリプトからこのショートカットを作成することができる。

 ショートカットの作成手順は3段階に分かれる。まず、ファイル名を指定してCreateShortcutメソッドを呼び出してショートカットを表すオブジェクトを作成し、次にそのオブジェクトのプロパティを設定し、最後にSaveメソッドで保存を行う、という流れである。

WSHスクリプトによるショートカット作成の流れ
WSHスクリプトでショートカットを作成するには、これら3つのステップを踏む。

 なお、ひと口に「ショートカット」といっても、ファイルやフォルダのショートカットとWebページのショートカットとでは、ショートカットの実体も機能も違うので、スクリプトでは分けて扱う必要がある。

■ファイルやフォルダへのショートカット

 ファイルやフォルダへのショートカットの実体は、拡張子「.lnk」を持つファイルである。スクリプトでは、指定するファイル名の拡張子を「.lnk」にすることで、ファイルやフォルダへのリンクを作成することができる。この場合、CreateShortcutメソッドの戻り値がショートカットを表すWshShortCutオブジェクトとなる。

 WshShortCutオブジェクトでは、以下のプロパティが利用可能である(前出のクラス図では、これらに加え「RelativePath」というプロパティがあることになっているが、未実装のようなので表には入れなかった)。

プロパティ 意味
TargetPath リンク先のファイル名
WorkingDirectory 作業フォルダ
Hotkey キーボード・ショートカット
WindowStyle 実行時の大きさ
Description ショートカットの説明
IconLocation ショートカットのアイコン
Arguments 実行ファイルに渡すパラメータ
FullName (読み取り専用)ショートカットファイルのフルパス
WshShortCutオブジェクトのプロパティ

 これを見れば分かるとおり、GUIのショートカットのプロパティで設定できる項目がすべてスクリプトからも設定可能となっている。なお、TargetPath以外のプロパティは必要なければ設定しなくても構わない。

ショートカットのプロパティ画面
GUIで設定できるすべての項目が、WshShortCutオブジェクトのプロパティとして定義されていることが分かる。

 では、CreateShortcutを利用してデスクトップにメモ帳へのショートカットを作成してみよう。

1: Set objShell = WScript.CreateObject("WScript.Shell")
2: strDesktop = objShell.SpecialFolders("Desktop")
3: strFileName = strDesktop + "\メモ帳.lnk"
4:
5: Set objShortCut = objShell.CreateShortcut(strFileName)
6: objShortCut.TargetPath = "%SystemRoot%\System32\notepad.exe"
7: objShortCut.Save
8:
9: WScript.Echo strFileName & "にショートカットを作成しました。"

 デスクトップにショートカットを作成するために、デスクトップのパスをSpecialFoldersメソッドで取得している。そのパスにショートカットの名前と「.lnk」を付けた名前をCreateShortcutメソッドに渡す。5行目でCreateShortcutメソッドを呼び出し、6行目でリンク先を指定し、7行目で保存している。これを実行すると、デスクトップに「メモ帳」というショートカットを作成することができる。

 そのほかのプロパティを設定する場合は次のようにする。

 1: Const MAXIMIZE_WINDOW = 3
 2: Set objShell = WScript.CreateObject("WScript.Shell")
 3: strDesktop = objShell.SpecialFolders("Desktop")
 4: strMyDocuments = objShell.SpecialFolders("MyDocuments")
 5: strFileName = strDesktop + "\test.txt.lnk"
 6:
 7: Set objShortCut = objShell.CreateShortcut(strFileName)
 8: objShortCut.TargetPath = "%SystemRoot%\System32\notepad.exe"
 9: objShortCut.WorkingDirectory = strMyDocuments
10: objShortCut.Arguments = "test.txt"
11: objShortCut.Hotkey = " Ctrl+Alt+X"
12: objShortCut.WindowStyle = MAXIMIZE_WINDOW
13: objShortCut.Description = "メモ帳でtest.txtを開きます。"
14: objShortCut.IconLocation = "%SystemRoot%\system32\SHELL32.dll, 1"
15: objShortCut.Save
16:
17: WScript.Echo strFileName & "にショートカットを作成しました。"

 9行目では、作業を行う際のカレント・ディレクトリ(作業フォルダ)をマイ・ドキュメントに設定し、10行目でメモ帳へのパラメータとしてtest.txtというファイル名を指定している。ファイルのパスが指定されていないので、カレント・ディレクトリであるマイ・ドキュメントのtest.txtが開かれることになる。

 11行目ではキーボード・ショートカットを設定している。キーボード・ショートカットを設定すると、デスクトップまたはスタート・メニューのショートカットをキー操作のみで実行できるようになる。ここでは、例としてCtrl+Alt+Xのキーを設定した。これを設定しておくと、マウスを使わずに、Ctrl+Alt+Xキーを押すだけで、いつでもショートカットを起動することができる。Hotkeyプロパティは「Alt+」「Ctrl+」「Shift+」と英数字の組み合わせで表現される。12行目はウィンドウの表示方法である。これは、Runメソッドでのウィンドウの表示方法と同じ0から10までの整数を指定する。指定する数字に関しては、前回の記事に一覧があるので参照されたい。13行目はショートカットの説明で、マウスをショートカット上にかざしたときにここで指定した説明が表示される。14行目は表示するアイコンで、アイコンを含むファイル名とそのファイルの中での番号をカンマで区切って指定する。

■Webページへのショートカット

 インターネット上のWebページへのショートカットは拡張子「.url」を持つファイルである。指定するファイル名の拡張子を「.url」にすれば、Webページへのリンクを作成することができる。この場合、CreateShortcutメソッドの戻り値はURLショートカットを表すWshUrlShortcutオブジェクトとなる。WshUrlShortcutオブジェクトでは、WshShortcutのようにさまざまなプロパティを設定することはできず、TargetPathとFullNameのみが利用できる。

プロパティ 意味
TargetPath リンク先のファイル名
FullName (読み取り専用)ショートカットファイルのフルパス
WshUrlShortcutオブジェクトのプロパティ

 デスクトップに「Windows Server Insider」(本サイト)へのショートカットを作成するには次のようなコードを書けばよい。

1: Set objShell = WScript.CreateObject("WScript.Shell")
2: strDesktop = objShell.SpecialFolders("Desktop")
3: strFileName = strDesktop + "\Windows Insider.url"
4:
5: Set objShortCut = objShell.CreateShortcut(strFileName)
6: objShortCut.TargetPath = "http://www.atmarkit.co.jp/fwin2k/"
7: objShortCut.Save
8:
9: WScript.Echo strFileName & "にショートカットを作成しました。"

 このように拡張子を「.url」にし、TargetPathにリンク先URLを設定するだけで、ファイルやフォルダに対するショートカットと同様のコードでWebページへのショートカットも作成できる。

■特殊フォルダの利用

 特殊なフォルダにショートカットを作成すれば、スタート・メニューや起動の内容も変更できる。ここで、それらのフォルダの指定方法を紹介しておこう。

特殊フォルダ 指定方法
スタート・メニュー(すべてのプログラム) objShell.SpecialFolders("Programs")
スタート・メニューの「スタートアップ」 objShell.SpecialFolders("Startup")
コンテキスト・メニューの「送る」 objShell.SpecialFolders("SendTo")
お気に入り objShell.SpecialFolders("Favorites")
クイック起動 objShell.ExpandEnvironmentStrings( _"%APPDATA%\Microsoft\Internet Explorer\Quick Launch")

 デスクトップではなくクイック起動に「Windows Server Insider」を追加するには、次のように変更するだけである。

1: Set objShell = WScript.CreateObject("WScript.Shell")
2: strQL = objShell.ExpandEnvironmentStrings( _
3:   "%APPDATA%\Microsoft\Internet Explorer\Quick Launch")
4: strFileName = strQL + "\Windows Insider.url"
5:
6: Set objShortCut = objShell.CreateShortcut(strFileName)
7: objShortCut.TargetPath = "http://www.atmarkit.co.jp/fwin2k/"
8: objShortCut.Save

 これを実行してログオンし直せば、スタート・ボタンの横のクイック起動に新しいショートカットが追加されているのが分かるだろう(クイック起動が表示されていない場合は、タスク・バーの空き領域を右クリックし、ポップアップ・メニューの[ツール バー]−[クイック起動]をオンにする)。

■ショートカットの削除

 WshShellオブジェクトでは、ショートカットを作成することはできても削除することはできない。しかし、ショートカットも1つのファイルであるから、通常のファイルと同様に処理すれば、ショートカットも削除できる。WSHでは、ファイルの削除にはFile System Object(FSO)というオブジェクトを利用する。FSOはこの連載ではまだ紹介していないが、削除を行うコードのみここで紹介しておこう。

1: Set objShell = WScript.CreateObject("WScript.Shell")
2: Set objFSO = CreateObject("Scripting.FileSystemObject")
3: strQL = objShell.ExpandEnvironmentStrings( _
4:   "%APPDATA%\Microsoft\Internet Explorer\Quick Launch")
5: strFileName = strQL + "\Windows Insider.url"
6: objFSO.DeleteFile(strFileName)

 このようにFSOオブジェクトを作り、そのDeleteFileメソッドにファイル名を渡せば作成したショートカットを削除することができる。

 次回もWshShellオブジェクトの機能として、アプリケーション・イベント・ログの作成やレジストリ情報の取得・設定について解説する。End of Article


 INDEX
  [運用]Windows管理者のためのWindows Script Host入門
  第6回 WshShellオブジェクトの詳細(2)
    1.特殊フォルダの取得
    2.環境変数の取得と設定
  3.ショートカットの作成
 
 運用

ホワイトペーパーTechTargetジャパン

Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  TomcatやJBossなどAPサーバ環境に関する
情報を集約! “業務”用APサーバ大百科

New!
  一気に解説! 最新のクラスタストレージ
「RAIDを超えたストレージ基準」……など

New!
  クラウド的ユーザー体験の変化は脅威か?
仮想化技術を使いこなす運用管理術を紹介

New!

  上司や部下、部署内メンバーとの情報共有
を“ガラッ”と変えるコラボツールとは?

New!
  おばかアプリ選手権、第4弾開催中!!
ムダにカッコよくてくだらない作品求ム!

  社内ファイルサーバを“クラウド”に統合
VPN直結「クラウド型ストレージ」を紹介

  Twitterのアカウントはなぜ突破された?
メールによる新手の攻撃手法とその対策

  もう仮想化のお試しフェイズは終わりだ!
Hyper-V 2.0が基幹システムも仮想化

  美人!? まあまあ? 気になる いやし系!!
PV急増で「美人時計」がとった手段とは?

  クライアント企業から求められる人材
⇒IT技術と経営戦略を併せ持つ「戦略家」

  .NET編集長が実践する「技術情報検索術」
サンプル・コードを簡単に探す“技”は?

  業務効率と情報セキュリティ対策を両立!
手間なく確実に機密情報を守る方法とは?

  進化を続ける富士通ストレージETERNUS DX
製品開発者の自信を裏付けるものとは何か

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  【CTC事例】約30の基幹システムを統合!
膨大なバッジジョブを制御した方法は?

  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  その数、なんと400台以上! グループ内
サーバの「統合管理」によるメリットは?