WakeupWindow() public static method

public static WakeupWindow ( IntPtr hWnd ) : void
hWnd System.IntPtr
return void
Esempio n. 1
0
        private static void ShowPreviousWindow()
        {
            // 実行中の同じアプリケーションのウィンドウ・ハンドルの取得
            var prevProcess = Win32Api.GetPreviousProcess();

            if (prevProcess != null && prevProcess.MainWindowHandle == IntPtr.Zero)
            {
                // 起動中のアプリケーションを最前面に表示
                Win32Api.WakeupWindow(prevProcess.MainWindowHandle);
            }
            else
            {
                if (prevProcess != null)
                {
                    //プロセス特定は出来たが、ウィンドウハンドルが取得できなかった(アイコン化されている)
                    //タスクトレイアイコンのクリックをエミュレート
                    //注:アイコン特定はTooltipの文字列で行うため、多重起動時は先に見つけた物がアクティブになる
                    var rslt = Win32Api.ClickTasktrayIcon(Application.ProductName);
                    if (!rslt)
                    {
                        // 警告を表示(見つからない、またはその他の原因で失敗)
                        MessageBox.Show(MyCommon.ReplaceAppName(Properties.Resources.StartupText1), MyCommon.ReplaceAppName(Properties.Resources.StartupText2), MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else
                {
                    // 警告を表示(プロセス見つからない場合)
                    MessageBox.Show(MyCommon.ReplaceAppName(Properties.Resources.StartupText1), MyCommon.ReplaceAppName(Properties.Resources.StartupText2), MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }
        private static void ShowPreviousWindow()
        {
            // 実行中の同じアプリケーションのウィンドウ・ハンドルの取得
            var prevProcess = Win32Api.GetPreviousProcess();

            if (prevProcess == null)
            {
                return;
            }

            if (prevProcess.MainWindowHandle != IntPtr.Zero)
            {
                // 起動中のアプリケーションを最前面に表示
                Win32Api.WakeupWindow(prevProcess.MainWindowHandle);
            }
            else
            {
                //プロセス特定は出来たが、ウィンドウハンドルが取得できなかった(アイコン化されている)
                //タスクトレイアイコンのクリックをエミュレート
                //注:アイコン特定はTooltipの文字列で行うため、多重起動時は先に見つけた物がアクティブになる
                Win32Api.ClickTasktrayIcon(Application.ProductName);
            }
        }