- WMI Fun !! -|WMI StepWMI SampleSearchWMI Fun !! GroupsAbout WMI Fun !!
Top Page >> WMI Step >> VB.NETからWMIを使ってみよう
VB.NETからWMIを使ってみよう
Topics

そろそろVisual Basic .NETを使ってアプリケーションを組んでいる人も出てきたんではないかと思い、ここらでVB.NETでWMIを使う方法を紹介します。
VB.NETからは.NET Framewrokを使用してWMIを呼び出し使用します。

今までのサンプルと同様にButtonをフォームに一つ貼り付けた状態のサンプルになります。

ちなみに私はまだVB.NETは全然触れていません(爆)。よって不十分な表記があるかもしれませんがその時は指摘してもらえればなと思います。


Sample Code

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim Searcher As New ManagementObjectSearcher()
Dim PrcSrc As ManagementObjectCollection
Dim Prc As ManagementObject
Dim MesStr As String

Searcher.Query.QueryString = "SELECT * FROM Win32_Process"
PrcSrc = Searcher.Get

For Each Prc In PrcSrc

MesStr = MesStr & Prc("Description") & ":" & Prc("ProcessId").ToString() & vbCrLf

Next

MsgBox(MesStr)

End Sub

Comment

では実行してみましょう。
多分エラーが出ると思います。「プロジェクト」メニューから「参照の追加」を選択し、「.NET」タブの中から「System.Management」を選択し「OK」を押します。これが今までVB6の時に行っていた参照設定の代わりのようなものになります。

これで実行するとまたエラーが発生すると思います。先程参照の追加をおこなったSystem.Managementを名前空間としてインポートする必要があります。
Form1クラスの前で、


Imports System.Management

と書いておくとSystem.Management名前空間が定義され、用意されている各種クラスが初めて使用できるようになります。

さて実行してみましょう。現在実行中の各プロセスが表示されたはずです。

簡単にソースを説明していくと、
ManagementObjectSearcherクラスでWQLで取得したい情報の構文を記述し、Getメソッドを使用してコレクションの取得を行います。 ManagementObjectCollectionクラスがGetメソッドを使用して取得した結果を収める器になります。
あとはFor Each構文を使用してコレクションを解析していきます。ManagementObjectクラスはコレクション解析時に使用しています。

今までVBでWMIを使っていた人は大体手段は変わっていないことが解ると思います。ただ.NET Framewrokを使う必要があり抵抗感と開発環境に慣れないというのが問題点でしょうか。(笑)
(ちなみにMicrosoft WMI Scripting V1.2 Libraryを参照すれば今までどおり使うことも可能です。)

ちなみに私自身はあまり.NETは好きじゃありません。作成したアプリケーションの起動が遅いのがどうも…です。あとは.NET Framewrokを勉強しなくてはいけないのが時間が無い私にとって一番の問題点だったりします。


WMI を本で勉強したい方へ。 Windows PowerShellインアクション を読んでみては?
なかなか WMI のことが乗っている書籍は少ないですが…管理系業務に係る方には楽しめるかも?
パソコンで目が疲れたら、ブルーベリーアイ
『ブルーベリーアイ』1粒中ビルベリーエキス160mg【楽天シニア市場】
 ^ Copyright(C) 1997-2006 とお All rights reserved. <<