1818 Copyright (C) 2010, ryoji, Moca、Uchi
1919 Copyright (C) 2011, ryoji
2020 Copyright (C) 2013, Uchi
21- Copyright (C) 2018-2022 , Sakura Editor Organization
21+ Copyright (C) 2018-2026 , Sakura Editor Organization
2222
2323 SPDX-License-Identifier: Zlib
2424*/
@@ -666,6 +666,11 @@ HWND CEditWnd::Create(
666666 // 画面表示直前にDispatchEventを有効化する
667667 ::SetWindowLongPtr ( GetHwnd(), GWLP_USERDATA, (LONG_PTR )this );
668668
669+ MSG msg{};
670+
671+ // メッセージキューを作成する
672+ ::PeekMessageW (&msg, hWnd, WM_USER , WM_USER , PM_NOREMOVE );
673+
669674 // デスクトップからはみ出さないようにする
670675 _AdjustInMonitor (sTabGroupInfo );
671676
@@ -677,17 +682,30 @@ HWND CEditWnd::Create(
677682 m_bIsActiveApp = ( ::GetActiveWindow () == GetHwnd () ); // 2007.03.08 ryoji
678683
679684 // エディタ-トレイ間でのUI特権分離の確認(Vista UIPI機能) 2007.06.07 ryoji
680- {
681- m_bUIPI = FALSE ;
682- ::SendMessage ( m_pShareData->m_sHandles.m_hwndTray, MYWM_UIPI_CHECK , (WPARAM )0, (LPARAM )GetHwnd() );
683- if ( !m_bUIPI ){ // 返事が返らない
685+ if (const auto hWndTray = m_pShareData->m_sHandles .m_hwndTray ) {
686+ std::wcout << L" [UIPI] >> Send From: hwndEdit = " << (ULONG_PTR )hWnd << L" To hwndTray = " << (ULONG_PTR )hWndTray << std::endl;
687+
688+ // 戻り値取得用変数(成功するとhWndが返って来る)
689+ DWORD_PTR dwRes = 0 ;
690+
691+ // コントロールプロセスにMYWM_UIPI_CHECKを送る
692+ ::SendMessageTimeoutW (hWndTray, MYWM_UIPI_CHECK , 0L , LPARAM (hWnd), SMTO_NORMAL, 10000, &dwRes);
693+
694+ // メッセージ返送を回収する(とれない場合もあるが問題はない。)
695+ ::PeekMessageW (&msg, hWnd, MYWM_UIPI_CHECK , MYWM_UIPI_CHECK , PM_REMOVE | PM_QS_SENDMESSAGE );
696+
697+ std::wcout << L" [UIPI] << Send Result: dwRes = " << dwRes << std::endl;
698+
699+ if (!dwRes) { // 送信失敗
700+ std::wcout << L" [UIPI] No Response" << std::endl;
684701 TopErrorMessage ( GetHwnd (),
685702 LS (STR_ERR_DLGEDITWND02 )
686703 );
687704 ::DestroyWindow ( GetHwnd() );
688705 m_hWnd = hWnd = nullptr ;
689706 return hWnd;
690707 }
708+ std::wcout << L" [UIPI] m_bUIPI=TRUE" << std::endl;
691709 }
692710
693711 CShareData::getInstance ()->SetTraceOutSource ( GetHwnd () ); // TraceOut()起動元ウィンドウの設定 // 2006.06.26 ryoji
@@ -1527,8 +1545,8 @@ LRESULT CEditWnd::DispatchEvent(
15271545
15281546 case MYWM_UIPI_CHECK :
15291547 /* エディタ-トレイ間でのUI特権分離の確認メッセージ */ // 2007.06.07 ryoji
1530- m_bUIPI = TRUE ; // トレイからの返事を受け取った
1531- return 0L ;
1548+ std::wcout << L" [UIPI] ------ MYWM_UIPI_CHECK " << std::endl;
1549+ return LRESULT (lParam) ;
15321550
15331551 case MYWM_CLOSE :
15341552 /* エディタへの終了要求 */
0 commit comments