アプリケーションから他のexeを終了させるには?

解決


ぼーちゃん  2006-07-25 04:43:50  No: 132440

お世話になっております。
ご存知のかたがいらっしゃいましたら、ご教授ください。

開発環境:WinXP
開発言語:.Net2005

あるexe(A_prj)を起動後、他のexe(B_prj)を起動させ(Shell関数を使用してます)
exe(A_prj)を終了させたいのですが
何か良い方法があれば教えてください。

補足:exe(B_prj)を呼び出し、Fromを表示する前に
exe(A_prj)を終了したいのです・・。

いろいろ調べてみたのですが、わからず質問させて頂きました。
よろしくお願いいたします。


Hongliang  URL  2006-07-25 05:15:26  No: 132441

Shell 関数の代わりに System.Diagnostics 名前空間の Process クラスを使いましょう。
MSDN や web にサンプルも豊富に見つかるでしょう。


ぼーちゃん  2006-07-25 19:44:15  No: 132442

Hongliangさん、ありがとうございます。

 
dim Command as string 'パラメータ

' 実行ファイルを実行する
 System.Diagnostics.Process.Start(C_UpdateExe, Command)

で、exeを起動することができました。
元exe(A)を終了する処理を(.CloseMainWindow)試してみたのですが
exe(A)が終了しません。
ヘルプを読んだところ、killは使いたくないなぁと思います。

プロセスIDというのがあればなんとかなるような気がするのですが
exe(A)のプロセスID取得方法がわからないです。

たびたび申し訳ありませんが、ご教授いただけないでしょうか?


特攻隊長まるるう  2006-07-25 20:15:01  No: 132443

ヘルプ(MSDN)にも同じページがあるはずです。
用意されているメンバに全て目を通してみてください。
[Process メンバ]
http://msdn2.microsoft.com/ja-jp/library/system.diagnostics.process_members.aspx
>プロセスIDというのがあればなんとかなるような気がするのですが
>exe(A)のプロセスID取得方法がわからないです。
Id プロパティでは?

>元exe(A)を終了する処理を(.CloseMainWindow)試してみたのですが
>exe(A)が終了しません。
その原因も調べる必要がありそうですが?


ぼーちゃん  2006-07-25 23:41:02  No: 132444

特攻隊長まるるうさん、ご返答ありがとうございます。

朝から試行錯誤しているのですが
今だ解決できません・・(泣
**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でも取得ができないのです・・。
 
 根本的に何かが間違っているのでしょうか?


ぼーちゃん  2006-07-26 19:33:46  No: 132445

お世話になっております。
試行錯誤の末、Shell関数を使用し解決しました。
すみません。

やり方としましては
A_exeでB_exeを起動させて、
そのままフォームロードを行わず終了させることにしました。

もっと細かい設定などを行う際は、Processを使用したほうが
よさそうですね。
勉強してみます。
ありがとうございました。


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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