エグゼが起動したかどうかを知るには?


佐々木  2006-02-23 02:41:20  No: 130357

Test.exeが起動したどうかの判定をしたいのですが、
どのようにしたらわかるでしょうか?

宜しくお願いします。    (VB6)


魔界の仮面弁士  2006-02-23 02:56:54  No: 130358

WMI の Win32_Process クラスを使うのが簡単かと。


佐々木  2006-02-23 03:37:15  No: 130359

魔界の仮面弁士さん、早速ありがとうございます。

Dim i   As Long
Dim Pro As Object
 
  i = Shell("C:\Test.exe", 1)

  For Each Proc In GetObject("winmgmts:").InstancesOf("win32_process")
     If Pro.ProcessId = i Then MsgBox "テスト"
  Next

こういった形で、Shell関数で起動させたExeに対してはできたのですが、
コンパイルされたExeをユーザーがTest.exeを起動させたときは
どのようにしたらよいでしょうか?

宜しくお願いします。


魔界の仮面弁士  2006-02-23 03:57:42  No: 130360

> Shell関数で起動させたExeに対してはできたのですが、
ProcessId ではなく、ファイル名や実行パスで検索すればよいかと。

それと、InstancesOf の結果をすべて列挙するのではなく、
WQL を用いて、ExecQuery にて検索した方が、効率がよいですよ。

> コンパイルされたExeをユーザーがTest.exeを起動させたときは
「Test.exe が起動した時に、何か処理を行いたい」のであれば、
WMI のイベントで処理してみてください。

http://www.showg.net/monoiziri/WMI/Search/Search02.htm
http://www.microsoft.com/japan/technet/community/columns/scripts/sg0103.mspx


佐々木  2006-02-23 06:41:40  No: 130361

魔界の仮面弁士さん、ありがとうございます。
ほとんど、WMIをわからずにレスしました。

リンクして頂いたところで、よく勉強をして、
再度質問させて、頂きます。

亀レスになると思いますが、
その際は、またよろしくお願いします。


佐々木  2006-02-24 00:00:28  No: 130362

リンク貼って頂いたところを何度も
読み返してみたり、

WMI イベント  で検索をかけて

調べてみたのですが、

いろいろなOS情報を取得することはいろいろできるようですが、

「Test.exe が起動した時に、何か処理を行いたい」

ことには中々理解できないので、
もう少し教えて頂けないでしょうか?

宜しくお願いします。


佐々木  2006-03-01 19:18:44  No: 130363

その後も引き続き調べてみたのですが、
どうも理解がうまくできません。

なんとかして、目的のこと
>「Test.exe が起動した時に、何か処理を行いたい」

をしたいので、どなたかご教授お願いできませんか?

何卒、宜しくお願いします。


もげ  2006-03-01 19:46:49  No: 130364

http://www.microsoft.com/japan/technet/community/columns/scripts/sg0103.mspx


notepad.exe を、Test.exe
WScript.Echo "Monitoring the web service..."  を  何か処理

置き換えればいいのでは?

WScript.EchoはVBScriptの用法なので、
それをVBに置き換えるか、

上述vbsファイルをそのままTest.vbsのように置き換えて
Text.exeを監視するVBScriptとして実装するのもひとつの方法ですが。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加