Introduction
備忘録。
C++/C#の連携で、C++アプリから起動したC#アプリを、C++アプリから正常終了させる方法。
基本は、
- CreateProcessの戻りのプロセスIDを保持
- 終了させる際、プロセスIDからウィンドウハンドルを取得
- PostMessageでWM_CLOSEを送る
です。
ソースは下記になります
Demo
C++
1 |
|
GetWindowHandleで、プロセスIDからウィンドウハンドルを探し出しているのが肝です。
そして、このサンプルではプロセス起動後、Sleepで少し待機しています。
そうしないと、ウィンドウハンドルが取れないので…
コメントにも書いたように、おそらくウィンドウハンドルが生成され切っていないのかと。
C#
WPFのサンプルです。
コードビハインドですが、気にしません。
1 | using System; |
Source Code
https://github.com/takuya-takeuchi/Demo/tree/master/Misc/03_KillProcessSafetyByHWND