请教:为何托盘程序恢复正常窗口变成全黑?

snksxsyy 2022-05-06 09:01:50

程序最小化在托盘,再次双击打开程序时会将已运行的托盘程序恢复成正常窗口,但是变成了下图,全黑了。。。

请问这是什么原因?从网上找的代码,没接触过,看不太懂。请帮忙解惑,谢谢!!!

 

public static void Singling(params string[] str)
        {
            formName = str;
            Process instance = RunningInstance();
            if (instance != null)   //首先确定有无进程
            {
                pro = instance;
                if (pro.MainWindowHandle.ToInt32() != 0) //是否托盘化
                {
                    HandleRunningInstance(pro);
                }
                else
                {
                    //托盘 显示全黑 待解决
                    CallBack myCallBack = new CallBack(Report);
                    EnumWindows(myCallBack, 0);
                }
                System.Environment.Exit(System.Environment.ExitCode);//退出进程
            }

        }
    }

 

        private static bool Report(IntPtr hwnd, int lParam)
        {
            //获得窗体标题
            StringBuilder sb = new StringBuilder(100);
            GetWindowText(hwnd, sb, sb.Capacity);

            int calcID;
            //获取进程ID   
            GetWindowThreadProcessId(hwnd, out calcID);
            for (int i = 0; i < formName.Length; i++)
            {
                if ((sb.ToString() == formName[i]) && (pro != null) && (calcID == pro.Id)) //标题栏、进程id符合
                {
                    ShowWindow(hwnd, SW_RESTORE);
                    SwitchToThisWindow(hwnd, true);
                    //SetForegroundWindow(hwnd);
                    Rect windowRec;
                    GetWindowRect(hwnd, out windowRec);
                    System.Drawing.Rectangle rect = System.Windows.Forms.SystemInformation.VirtualScreen;
                    SetWindowPos(hwnd, HWND_TOP, (rect.Width - (windowRec.Right - windowRec.Left)) / 2,
                        (rect.Height - (windowRec.Bottom - windowRec.Top)) / 2, 0, 0, SWP_NOSIZE);
                    return true;
                }
            }
            //else
            return true;
        }

 

...全文
116 1 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
snksxsyy 05-06

问题已解决,错误原因:最小化到托盘时,错用了 this.Visibility = Visibility.Hidden;
应该使用下面两条语句:
this.WindowState = WindowState.Minimized;
this.ShowInTaskbar = false;//隐藏任务栏图标

  • 打赏
  • 举报
回复
相关推荐
发帖
WPF/Silverlight

8674

社区成员

WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
帖子事件
创建了帖子
2022-05-06 09:01
社区公告
暂无公告