Delphi de WMI

戻る


  DelphiでWMI ( Windows Management Instrumentation )を使おうと思ったら、VBのサンプルに比べて、あまりにも参考情報が無さ過ぎで非常に苦労したので、そこにたどり着くまでの情報をまとめてみました。まだ分からないところが沢山あるんですが、これからはじめる人の参考になれば。


■開発環境

とりあえず、今のところ無料で手に入る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での苦労はなんなんだって感じですが、一旦できるようになってしまえばあとはそれほど苦労はしない(この発言は無保証です)と思います。


■その他便利(かもしれない)なツール

 WMIが使えていれば、最初っから入っているようです。でも使い方が良く分かりません。というかどういうデータがあるのか知ってないと使えなさそうです。

 Microsoft(英語)からダウンロードできます。こっちは、多少ユーザフレンドリーな印象を受けたんですが、なんか表示される情報が少ないんですよね(僕だけ?)「WMI Administrative Tools」(ファイル名「WMITools.exe」、2k,XP用)

 もういっちょ、これが一番使っているんですが。フリーソフトでHTAで書かれているのでソースも見れます。でもこれでも上手く取れない情報があるんです(IE関係の情報は取れなさそう、改造すればいいんでしょうけど、Delphi以外の言語をいじるのは私は苦痛で・・・)

 WMI用のコンポーネント製品です(英語だけど)。お金に余裕のある方はそういうのを買ったほうが、クエリーだけ考えていればいいので苦労しないかもしれません。


 戻る