WMIでのプロセスの起動・終了監視について
WMIでのプロセスの起動・終了監視について
●環境
Microsoft VC++ 6.0
Windows XP Pro
●質問
http://mrxray.on.coocan.jp/Delphi/plSamples/902_WMI_ProcessCreateTerminate.htm
の「04_プロセス(アプリケーション)の起動と終了を監視」を参考に、VCに置き換えて作成したのですが途中で詰まってしまいました。
get_Classによる取得までできて、プロセスの作成・終了までは分かるようになったのですが
そのプロセスの情報が取得できません(プロセスIDや名前など)、参考にしたページ(Delphi)ではTargetInstanceから取得できるようなのですが、VCではそのプロパティ(?)が見つからず情報を取得出来ませんでした
どうすれば、プロセスの情報を取得出来るのでしょうか?
よろしくお願いします。
●ソース
_COM_SMARTPTR_TYPEDEF(ISWbemEventSource, __uuidof(ISWbemEventSource));
_COM_SMARTPTR_TYPEDEF(ISWbemObject, __uuidof(ISWbemObject));
_COM_SMARTPTR_TYPEDEF(ISWbemObjectPath, __uuidof(ISWbemObjectPath));
ISWbemEventSourcePtr SWbemEventSourcePtr;
hResult = SWbemServices->ExecNotificationQuery(_bstr_t(L"SELECT * FROM __InstanceOperationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'"),
_bstr_t(L"WQL"),
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
NULL,
&SWbemEventSourcePtr);
while(TRUE)
{
ISWbemObjectPtr SWbemObjectPtr;
hResult = SWbemEventSourcePtr->NextEvent(-1, &SWbemObjectPtr);
CString ccc;
{
ISWbemObjectPathPtr SWbemObjectPathPtr;
hResult = SWbemObjectPtr->get_Path_(&SWbemObjectPathPtr);
CComBSTR ClassString;
hResult = SWbemObjectPathPtr->get_Class(&ClassString);
ccc = ClassString;
}
■■■ここでプロセスに関する情報を取得したい■■■
if(ccc == "__InstanceCreationEvent"){
// プロセス作成
}
else if(ccc == "__InstanceDeletionEvent"){
// プロセス終了
}
}
お礼
すみません自己解決しました。 ループにするのではなく、Timerによる一定間隔で対応することにしました。