首页 > 解决方案 > 将wpf App带到后台运行的前台?

问题描述

我创建了一个 WPF 应用程序。在关闭窗口时(通过单击标题栏上的 X),我正在隐藏应用程序,我们可以从托盘图标重新启动或退出应用程序。

        NotifyIcon notifyIcon = new NotifyIcon();
        string a = Properties.Resources.SuccessTitle;
        notifyIcon.Icon = Properties.Resources.pencil;
        notifyIcon.ContextMenu = new ContextMenu(new MenuItem[]
            {  exitMenuItem });
        notifyIcon.Visible = true;
        notifyIcon.Text = "My App Name";
        notifyIcon.DoubleClick += notifyIcon_DoubleClick;

通知图标对我来说很好,即当我双击托盘图标时,应用程序即将落地。下面是双击事件的代码

if (window.IsVisible)
        {
            if (window.WindowState == WindowState.Minimized)
            {
                window.WindowState = WindowState.Normal;
                window.Activate();
            }
            else
            {
                window.Activate();
            }
        }
        else
        {
            window.Visibility = Visibility.Visible;
        }

当应用程序处于最大化或最小化状态时,单击 exe 也可以正常工作。

    Process current = Process.GetCurrentProcess();
    // Enumerate through all the process resources on the share
    // local computer that the specified process name.
    foreach (Process process in
                     Process.GetProcessesByName(current.ProcessName))
      {
         if (process.Id != current.Id)

           {
                  NativeMethods.SetForegroundWindow( process.MainWindowHandle);
                  NativeMethods.ShowWindow(process.MainWindowHandle,
                           WindowShowStyle.Restore);
                  break;
           }
      }

现在,在隐藏窗口时单击 exe 时,我想要相同的效果。我怎样才能实现它。我试图调试代码,发现当应用程序被隐藏时

主窗口句柄 = 0X00000000

当它可见时,即最小化或最大化,则 MainWindowHandle 具有一些有效值。

标签: wpfprocess

解决方案


推荐阅读