豊田 孝
図1●Windows 2000のコントロールパネル |
コントロールパネル機能の自動化
ご承知のように,コントロールパネルは,現在私たちが使用しているコンピュータ環境を柔軟にカスタマイズするための,グラフィカル・ユーザー・インタフェース(GUI)を提供しています。Windows XPは,Windows 2000以前と比べてユーザー・インタフェースが大幅に変わるといわれてます。まずは,Windows 2000のコントロールパネル画面(図1[拡大表示])とWindows XP(β2)のコントロールパネル画面(図2[拡大表示])を見比べてみましょう。
図2●Windows XPのコントロールパネル |
それではまず,コントロールパネル機能を呼び出すサンプル・プログラムのソースコードを説明します。ソース・コードの基本的な考え方は第1回~第4回で説明してありますから,今回からは,どちらかといえば,サンプル・プログラムの活用方法に説明の重心を移していきたいと思います。
'************************************************** 'プログラム行数 = 9 '機能:コントロールパネル機能を呼び出す。 'カットアンドペーストでテキストエディタにコピー後, 'CPAuto.vbsとして保存してください。 '************************************************** Dim myHelper,myCPHelper_1,myCPHelper_2,myCPHelper_3,myCPHelper_4,myCPHelper_5 Set myHelper = CreateObject("Shell.Application.1") Set myCPHelper_1 = myHelper.NameSpace(3) ' NameSpaceについては次回詳述 'myCPHelper_1.Items.Item(18).Verbs.Item(0).DoIt 'このコードは次のような意味を持つ。基本となる考え方については前回記事参照 'myCPHelper_1.Items."「日付と時刻」画面の".Verbs."表示を"."開始せよ!" '相談相手を呼び出し,相談する Set myCPHelper_2 = myCPHelper_1.Items' 詳細は本文参照 Set myCPHelper_3 = myCPHelper_2.Item(18)' 目的の機能選択 Set myCPHelper_4 = myCPHelper_3.Verbs' 詳細は本文参照 Set myCPHelper_5 = myCPHelper_4.Item(0)' 目的のメソッド選択 myCPHelper_5.DoIt '選択したメソッドの実行 Set myHelper = Nothing
図3●「日付と時刻」のアイコンを右クリックする |
これはコントロールパネル内に表示されている「日付と時刻」のアイコンを右クリックした画面です。Windowsにおいて“アイコンを右クリックする”という行為を我々の日常生活に当てはめると,“あなたはどのようなことができますか”と,直接本人に尋ねているようなものです。図3の場合,「日付と時刻」機能本人から返ってきた答えは,“「開く」と「ショートカットの作成」という2つの動作ができる”というものです。
これは,「日付と時刻」機能自身が自分のできることを知っている,ということを意味します。私たちの日常生活に例えれば,相談相手自身が“自分が相談に乗れるのはこの範囲だよ”と教えてくれているようなものです。このわかりやすい論理がプログラム設計にも活かされているわけです。
ちなみに,「日付と時刻」機能の「開く」をマウスでクリックすると,実際には私たちの目に見えないところで「rundll32.exe」というプログラムが起動され,rundll32.exeがtimedate.cplファイルを開いているのです。しかし私たちは,このような複雑な事情を一切意識する必要がありません。私たちがすべきことは,「開く」をクリックすることだけです。このようなことが可能なのは,「日付と時刻」機能自身が自分のできることを知っているからなのです。
図4●Windows 2000のコントロールパネル機能の一覧 |
Set myCPHelper_4 = myCPHelper_3.Verbs '相談相手を呼び出す
Set myCPHelper_5 = myCPHelper_4.Item(0) '「開く」機能選択相談
myCPHelper_5.DoIt '「開く」機能実行依頼
サンプル・プログラムの活用方法
ここでは,サンプル・プログラムの活用方法を説明します。プログラム中の数値を変更するだけで,Windows 2000とWindows XPのコントロールパネルの機能を呼び出すことができます。コントロールパネルの機能の呼び出しを実現するのが次のコードです。
Set myCPHelper_3 = myCPHelper_2.Item(18) 'コントロール機能の選択
図5●Windows XPのコントロールパネル一覧 |
図6●myCPHelper_2.Item( )の値を「26」にする(Windows 2000) |
図4,図5の画面情報は,ファイル数とフォルダ数という2つの欄に分けて表示していますが,Windows XPはWindows 2000と比べてフォルダ数が増えていることに気が付いたでしょうか。詳しい説明は後日行う予定ですが,フォルダ内の項目を右クリックしてみてください。メソッド数が大幅に増えていることが確認できるはずです。また,「c:\winnt\system32\timedate.cpl」ファイルなどを右クリックしてみると面白い情報が表示されます。
それでは,画面情報を参照しながら,目的のコントロール機能に対応する数値を決め,myCPHelper_2.Item(18)の「18」の部分をその数値で置き換えてみましょう。例えば,「26」と入力すれば,私のWindows 2000とWindows XP環境ではそれぞれ図6[拡大表示],図7[拡大表示]のよう画面が表示されます。
図7●myCPHelper_2.Item( )の値を「26」にする(Windows XP) |
今回は,コントロールパネルの機能を簡単に呼び出す方法を紹介しました。ListCPItems.exeプログラムと併用すれば,今回の10行サンプルコードは便利な学習教材になると思います。自由に改善して試してみてください。ただし,実行は自己責任でお願いいたします。次回は,デスクトップの世界を見てみることにします。それではまたお会いいたしましょう。ごきげんよう。