コーヒーカップは貝殻で。

仕事とか、趣味とか、育児とか、思いつくままに書いみます。

WMIをLotusScriptで利用するエッセンス

WMI(Windows Management Instrumentation1)をLotusScriptで利用する際のオブジェクトの定義方法を備忘録的に書いておきます。
「Window上で動作しているタスク処理を、NotesDBで監視したり、制御したりしたい」という、誰得な要望が上がりちょっと調べた結果です。
需要はあんまりないかもですが、半分自分が忘れないようにするため(汗)

定期エージェントなんかに処理を仕込んでおけば常駐し、OSのプロセスを監視してくれるかなと思います。

WMIオブジェクトをLotusScriptで利用する(定義する)場合は以下の通りに記述します。

'ローカルコンピュータに接続
Set oLocator = CreateObject("WbemScripting.SWbemLocator")

例えばMicrosoft Office Wordが実行中かどうかを調査する処理は以下のようになります。
クエリ形式でプロセスを取得することができるんですね。

Dim oLocator   As  Variant 'WMIオブジェクト用変数
Dim oService  As  Variant 'WMIオブジェクト用変数
Dim oProcessSet   As  Variant 'プロセス格納変数
Dim apps  As  String  '検索対象のアプリケーション
    
'ローカルコンピュータに接続
Set oLocator = CreateObject("WbemScripting.SWbemLocator")
Set oService = oLocator.ConnectServer()
    
apps = "WINWORD.exe"
    
'作成したクエリから、プロセス情報群を取得
Set oProcessSet = oService.ExecQuery(Sql)
    
'作成したクエリから、プロセス情報群を取得
Set oProcessSet = oService.ExecQuery("Select * From Win32_Process Where Name = '" & apps & "'")
If (oProcessSet(0) <> "") Then
Msgbox = "プロセスは稼働中です。" , 0 , "確認"
Else
Msgbox = "プロセスは稼働中していません。" , 0 , "確認"
End If

ちなみにLotusScriptでMS系のオブジェクトを触れる際のお作法は意外とVB系のサンプルコードが役に立ったりします。
(LotusScriptはBasic言語と文法が似ているので。)
WMIの深い使い方などはMicrosoft者のサイトなどをご覧いただければと思います。


  1. Windows Driver Modelへの拡張の一種で、システムの構成要素について情報収集と通知を行うWindowsOSのインタフェースを提供するクラス。