A.EXE と B.EXEがあったとします。
A.EXEからShellExecuteアプリケーションB.EXEを立ち上げたとします。
その時にA.EXEを終了せずにB.EXEの処理が終わり次第、B.EXEからA.EXEを、
終了させたいのですが、可能でしょうか?
いろいろと調べてみたのですが、見当がつきません。
どなかたご教授願えませんでしょうか?

ちなみにVC++6.0MFCです。

A 回答 (2件)

こんにちは。

itohhといいます。

A.EXEがウィンドウを持っているものとして回答します。

NNJA104さんの回答でほぼ良いと思うのですが、送るメッセージは、WM_CLOSEのほうが良いと思います。
一般的にOnClose(WM_CLOSEが受信されたとき)イベントで終了処理を行うのがベストだと思うからです。

1についての例を記載すます。
(B.EXE内の作り)
HWND hWnd;
hWnd = ::FindWindow( NULL, "A.EXEのウィンドウ名");
::PostMessage(hWnd, WM_COLSE, 0, 0);

(A.EXE内の作り)
CWnd::OnCloseに飛ぶのでメモリの解放などの終了処理を行う。

A.EXEのウィンドウ名とは、タスクマネージャーに表示される名称です。
    • good
    • 0
この回答へのお礼

わかりやすい説明ありがとうございました。
参考にさせて頂きます。

お礼日時:2001/06/13 13:07

んーと、A.EXEから監視をしているのならば話しは簡単なのですが、B.EXEから指示したいのですよね?


経験は有りませんが...

1.API32のFindWindowでA.EXEを探し、見付けたインスタンスハンドル(HINST)からウィンドウハンドル(HWND)を更に探り、そのHWNDに破棄(WM_DESTROY)を投げる。

2.B.EXE起動時にA.EXEからウィンドウハンドルを引き渡す。そのHWNDに破棄(WM_DESTROY)を投げる。

3.DDE通信を行って相互通信する。

のいずれかで可能かな。ちょっと自信無しです。
    • good
    • 0
この回答へのお礼

早速ご教授していただいた内容を試してみたいと思います。
ありがとうございました。

お礼日時:2001/06/13 13:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング