お世話になっております。
別のプログラムを強制終了したいのですが、
終了したいプロセスIDの取得方法がわかりません。
どのようにしらたIDが取得できるのでしょうか。
ご教授お願い致します。
環境は、VB.net です。
> 別のプログラムを強制終了したいのですが、
System.Diagnostics.Process クラスの CloseMainWindow メソッドでどうぞ。
ウィンドウレスなら Kill メソッドを。あるいは、System.Management から
Win32_Process クラスの Terminate メソッドを呼ぶという手も。
> 終了したいプロセスIDの取得方法がわかりません。
終了させることと、プロセスIdの取得とにどういった関係があるのでしょうか?
それと、プロセスIdを得るにしても、そもそも、その終了させるプログラムの
どんな情報を知っているのでしょうか? (たとえば、名前とか起動時刻とか…)
プロセスIdを得る手段があるにしても、それに対応する情報を何も
持っていないとすれば、どのプロセスのプロセスIdを得れば良いのか、
判断がつきませんよね。
> どのようにしらたIDが取得できるのでしょうか。
プロセスIdを知らずとも、終了用のメソッドを呼び出す事はできますから、
わざわざ Id を得る必要は無い気もしますよ。
一応、それ自体は、Win32_Process クラスなら ProcessId プロパティ、
Process クラスなら Id プロパティを使うことで、簡単に得られます。
もし、Process.Start() や Win32_Process.Create() で起動しているなら、
最初からインスタンスが得られているわけですから、それらのプロパティを
取得すれば良いでしょう。
ですが、既に起動済みのプロセスのプロセスId を得たいような場合には、
プロセスを列挙したり、あるいは検索メソッドを呼ぶなどして、それらの
インスタンスを取り出せますが、先にも書きましたように、そのプロセスに
関する情報が無い事には、どの Win32_Process / Process クラスの
インスタンスの Id を得るのかを判断しようが無いでしょうね。(^^;
http://dobon.net/vb/dotnet/process/killprocesse.html
Dim p As System.Diagnostics.Process
'processIdというプロセスIDを持つプロセスを取得
p = System.Diagnostics.Process.GetProcessById(processId)
'プロセスを強制終了
p.Kill()
を参考にして実装しています。
既に起動済みのプロセス(test)を終了したいのですが、
どのように実装したらよいのでしょうか。
起動しているプロセスを列挙して、検索するにかないのでしょうか。
以上です、ご教授お願い致します。
> 既に起動済みのプロセス(test)を終了したいのですが、
メモ帳なら、.GetProcessesByName("notepad")、
電卓なら、.GetProcessesByName("calc")
といった感じで Process を拾えます。 その test とやらはどうですか?
> 起動しているプロセスを列挙して、検索するにかないのでしょうか。
先にも書きましたが、そのプロセスの「何を知っているのか」次第です。
たとえば、アプリのパスがわかっていれば、Win32_Process クラスにて
SELECT * FROM Win32_Process WHERE ExecutablePath = 'フルパス'
のような WQL にて検索するという手もありますし。
getprocessesbyname を使用して無事実装できました。
ありがとうございました。
ツイート | ![]() |