--- lang: ja-jp breaks: true --- # C# WinForm 親プロセス(exe)から外部の子プロセス(exe)を起動し、親アプリのウインドウをオーナとして子アプリのフォーム画面を表示する 2021-11-15 子プロセスのウインドウをモーダルとして起動する際に使用する `NativeWindow` オブジェクトを確実に `ReleaseHandle()` しないと、子プロセスが終了すると同時に親プロセスも終了してしまう。 子プロセスのウインドウを起動する部分の処理 ```csharp= int processId = 0; int hWindow = 0; // コマンドライン引数から取得した親プロセス内のフォームウインドウハンドル。 GetCommandlineArgs(ref processId, ref hWindow); NativeWindow owner = new NativeWindow(); try { owner.AssignHandle(new IntPtr(hWindow)); using (SubForm from = new SubForm()) { from.SetMessage(hWindow.ToString()); from.ShowDialog(owner); } } finally { owner.ReleaseHandle(); // ※ここがポイント //owner.DestroyHandle(); } ``` ###### tags: `WinForm` `C#` `ウインドウハンドル` `子プロセス` `NativeWindow`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up