■開発環境
とりあえず、今のところ無料で手に入るDelphi6Personal日本語版で説明します。
WMIについては、WindowsNTsp4以降(W2k,XP,Meも)なら最初っから入っているようです(知らんかった)。
でもWindows95でもインストールしたら立派に使えます(95の場合にはDCOMも1.3以降にしなくちゃいけないので今からやるにはけっこう大変かもしれませんが・・・)。
MicrosoftのダウンロードセンターでWMIで検索したら見つかります。(今のうちかも)
「Windows Management Instrumentation (WMI) SDK 1.5 (Windows 95/98/NT 4.0)」(ファイル名は「wmicore.EXE」)
ただし、WMIで取得できる情報そのものはOSによって差があるようです。
■前準備
WMIはCOMで使えるらしいので、Delphiで特に何かインストールしなくてもCreateOleObjectでそのまま使うことが出来るようです。
もう一つは、タイプライブラリを取り込んで使う方法です。
Delphiのメニューより、プロジェクトのタイプライブラリの取り込みを選択します。
タイプライブラリの取り込みで、Microsoft WMI Scripting を選択し、インストールボタンを押します。(パレットページはお好きなものにしてください)
適当なパッケージに追加します。
パッケージのウインドウが表示されてコンパイルするかどうか聞いてくるのでコンパイル/インストールします。
コンパイルが正常に終わるとコンポーネントがインストールされた旨のダイアログが出ます。
パッケージウインドウを閉じると保存するか聞いてくるので保存します。
指定したタブにSWbemLocator等のアイコンが表示されます。これで「ポトリ&ペタリ」で使えます。
Delphi6を標準インストールしている場合、「C:\Program Files\Borland\Delphi6\Imports」このフォルダの中に、
WbemScripting_TLB.dcr
WbemScripting_TLB.dcu
WbemScripting_TLB.pas
ってファイルが出来てます。ここにごっそりconst値とか入っているので使えそうです。
ポトリ&ペタリをしないでCreateOleObjectでごりごり組もうという人もこのconstを見るだけでも価値があると思います。
■サンプルソース
以下は、NICの情報を取得するサンプルソースです、usesにWbemScripting_TLBとActiveXを追加して、FormにButtonとMemoを適当に配置してButtonのクリックイベントで使ってください(SWbemLocatorのポトリ&ペタリはしていません)。
WMIでどういう情報が取れるのかとか、プロパティの中にn件のデータがある場合にどうやって件数を取得するのかとかはまだよく分かっていません(というかあたりはつけてるんだけど、めんどくさくてやってない)。なので、try exceptで逃げている部分もあります。WMIのサンプルについては、「WMI Fun !!」というサイトにサンプルコーディング(ただしVB)が沢山ありますので、クエリーの参考にするのはいいかもしれません。(もち、MSDNとか調べれば情報は沢山ありますけど・・・)
VBだと、VBSでも簡単に情報がとれるので、Delphiでの苦労はなんなんだって感じですが、一旦できるようになってしまえばあとはそれほど苦労はしない(この発言は無保証です)と思います。
■その他便利(かもしれない)なツール
wbemtest.exe
WMIが使えていれば、最初っから入っているようです。でも使い方が良く分かりません。というかどういうデータがあるのか知ってないと使えなさそうです。
WMI Administrative Tools ( WMI Tools )
Microsoft(英語)からダウンロードできます。こっちは、多少ユーザフレンドリーな印象を受けたんですが、なんか表示される情報が少ないんですよね(僕だけ?)「WMI Administrative Tools」(ファイル名「WMITools.exe」、2k,XP用)
WMI Query Analyzer
もういっちょ、これが一番使っているんですが。フリーソフトでHTAで書かれているのでソースも見れます。でもこれでも上手く取れない情報があるんです(IE関係の情報は取れなさそう、改造すればいいんでしょうけど、Delphi以外の言語をいじるのは私は苦痛で・・・)
WMISet
WMI用のコンポーネント製品です(英語だけど)。お金に余裕のある方はそういうのを買ったほうが、クエリーだけ考えていればいいので苦労しないかもしれません。