Skip to content

二重起動時に既存のStartupDialogを表示する - #655

Merged
Freeesia merged 1 commit into
masterfrom
codex/issue-618-activate-existing-instance
Jul 26, 2026
Merged

二重起動時に既存のStartupDialogを表示する#655
Freeesia merged 1 commit into
masterfrom
codex/issue-618-activate-existing-instance

Conversation

@Freeesia

Copy link
Copy Markdown
Owner

概要

起動時のmutexチェックで既存インスタンスを検出した場合、エラーダイアログを表示する代わりに、既存プロセスのStartupDialogを表示してアクティブ化します。

変更内容

  • 同じ実行ファイルの既存プロセスを特定し、トップレベルウィンドウを列挙
  • SetPropで付与したマーカーを使ってStartupDialogのHWNDを特定
  • 登録済みウィンドウメッセージを既存プロセスへ送り、WPFのUIスレッド上でShow()を実行
  • 最小化されている場合は通常状態へ戻してからActivate()を実行
  • Loaded前に復元要求を受信した場合も、読み込み完了後に表示
  • 必要なWin32 API定義をNativeMethods.txtへ追加
  • Debug構成ではNO_MUTEXを定義し、複数プロセスでの確認を可能にする

背景

WPFのHide()はネイティブのWS_VISIBLEだけでなく、WPF側の可視状態も変更します。そのため、2個目のプロセスからShowWindowだけを呼ぶと、ウィンドウ枠は復元されてもWPFコンテンツが描画されない状態になります。

既存プロセスへ復元要求を通知し、そのプロセスのWPF UIスレッドでShow()を呼ぶことで、ウィンドウとコンテンツを正しく再表示します。

確認

  • dotnet build 成功
  • テストは依頼により未実施

Fixes #618

@Freeesia
Freeesia marked this pull request as ready for review July 25, 2026 18:17
@Freeesia
Freeesia merged commit e55011a into master Jul 26, 2026
7 checks passed
@Freeesia
Freeesia deleted the codex/issue-618-activate-existing-instance branch July 26, 2026 05:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

すでに起動しているアプリがあれば、そちらをフォーカスする

1 participant