お世話になっております。
ご存知のかたがいらっしゃいましたら、ご教授ください。
開発環境:WinXP
開発言語:.Net2005
あるexe(A_prj)を起動後、他のexe(B_prj)を起動させ(Shell関数を使用してます)
exe(A_prj)を終了させたいのですが
何か良い方法があれば教えてください。
補足:exe(B_prj)を呼び出し、Fromを表示する前に
exe(A_prj)を終了したいのです・・。
いろいろ調べてみたのですが、わからず質問させて頂きました。
よろしくお願いいたします。
Shell 関数の代わりに System.Diagnostics 名前空間の Process クラスを使いましょう。
MSDN や web にサンプルも豊富に見つかるでしょう。
Hongliangさん、ありがとうございます。
dim Command as string 'パラメータ
' 実行ファイルを実行する
System.Diagnostics.Process.Start(C_UpdateExe, Command)
で、exeを起動することができました。
元exe(A)を終了する処理を(.CloseMainWindow)試してみたのですが
exe(A)が終了しません。
ヘルプを読んだところ、killは使いたくないなぁと思います。
プロセスIDというのがあればなんとかなるような気がするのですが
exe(A)のプロセスID取得方法がわからないです。
たびたび申し訳ありませんが、ご教授いただけないでしょうか?
ヘルプ(MSDN)にも同じページがあるはずです。
用意されているメンバに全て目を通してみてください。
[Process メンバ]
http://msdn2.microsoft.com/ja-jp/library/system.diagnostics.process_members.aspx
>プロセスIDというのがあればなんとかなるような気がするのですが
>exe(A)のプロセスID取得方法がわからないです。
Id プロパティでは?
>元exe(A)を終了する処理を(.CloseMainWindow)試してみたのですが
>exe(A)が終了しません。
その原因も調べる必要がありそうですが?
特攻隊長まるるうさん、ご返答ありがとうございます。
朝から試行錯誤しているのですが
今だ解決できません・・(泣
**exe(A)の処理
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'exe_Bを起動
Dim hProcess As System.Diagnostics.Process = System.Diagnostics.Process.Start(exe_B)
end sub
**exe(B)の処理
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'現在のプロセスを取得する()
Dim hProcess As System.Diagnostics.Process = System.Diagnostics.Process.GetCurrentProcess()
と、しているのですが
Getしてくるプロセス名がexe_Bのみです。
exe_Bの処理の最初にexe_Aを終了したいのですが、
exe_Aを判別する方法(または、コード)がどうしても見つかりません・・。
特攻隊長まるるう さんから教えて頂いたProcess.IDでも取得ができないのです・・。
根本的に何かが間違っているのでしょうか?
お世話になっております。
試行錯誤の末、Shell関数を使用し解決しました。
すみません。
やり方としましては
A_exeでB_exeを起動させて、
そのままフォームロードを行わず終了させることにしました。
もっと細かい設定などを行う際は、Processを使用したほうが
よさそうですね。
勉強してみます。
ありがとうございました。
ツイート | ![]() |