C# WinUI 3アプリを作っていく途中で、調べたことを忘録的に投稿します。今回はWinUI3プロジェクトで起動中のプロセスのウィンドウをアクティブにする手順です。
Win32を利用して再表示
WinFormアプリでも同じことができますが、プロセスのメインウィンドウのハンドルが取得できればWin32に受け渡してアクティブ化することができました。
具体的には、最小化されていたら元のサイズに戻して、フォアグラウンドに持ってくる流れです。
[DllImport("user32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
[DllImport("user32.dll")]
private static extern bool IsIconic(IntPtr hWnd);
public static void ReshowWindow(IntPtr hWnd)
{
if (IsIconic(hWnd))
{
ShowWindowAsync(hWnd, 9);
}
SetForegroundWindow(hWnd);
}
アクティブ化したいプロセスのウィンドウハンドルが取得できたら、こんな感じで呼び出せます。
Process cp = GetExecuteProcess();
if (cp != null)
{
ReshowWindow(cp.MainWindowHandle);
}
まとめ
今回は短い記事ですが、WinUI 3 プロジェクトで、起動中のプロセスのウィンドウハンドルを使ってウィンドウを最前面に再表示する方法を書きました。
C#のWinUI 3アプリで、実行中の同じアプリのプロセスの画面を再表示したい人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。