A certain engineer "COMPLEX"

開発メモ128 子プロセスに対してWM_CLOSEを送る

Introduction


備忘録。
C++/C#の連携で、C++アプリから起動したC#アプリを、C++アプリから正常終了させる方法。
基本は、

  1. CreateProcessの戻りのプロセスIDを保持
  2. 終了させる際、プロセスIDからウィンドウハンドルを取得
  3. PostMessageでWM_CLOSEを送る

です。

ソースは下記になります

Demo


C++

GetWindowHandleで、プロセスIDからウィンドウハンドルを探し出しているのが肝です。
そして、このサンプルではプロセス起動後、Sleepで少し待機しています。
そうしないと、ウィンドウハンドルが取れないので...
コメントにも書いたように、おそらくウィンドウハンドルが生成され切っていないのかと。

C#

WPFのサンプルです。
コードビハインドですが、気にしません。

Source Code

https://github.com/takuya-takeuchi/Demo/tree/master/KillProcessSafetyByHWND

コメントを残す

メールアドレスが公開されることはありません。

%d人のブロガーが「いいね」をつけました。