我的问题发生在 Windows 7 上。
背景:
我有两个应用程序:
a) MainApp - 应始终在前台运行的软件,最大化(没有任务栏)
b) Watchdog - 监控 MainApp 是否正常运行的软件,如果 MainApp 实例关闭则启动新的 MainApp 实例。
问题:
一切正常。但我注意到有时在 Windows 7 上 MainApp 开始最小化 - 它在任务栏上显示图标,WindowState 是“最大化”(在日志中检查),但在我从任务栏恢复它之前,Form 是不可见的。Windows 10 上未出现问题(其他未检查)。
重现步骤 我设法通过以下方式重现此问题:
a) 运行看门狗 + MainApp
b) 点击 Win+D(最小化所有窗口)
c) 关闭 MainApp(使用任务栏上的鼠标)
d) 看门狗正在重新启动 MainApp最小化<= 问题!!
给我看代码
Watchdog 只需执行以下命令即可启动 MainApp:
var info = new ProcessStartInfo();
info.FileName = clientExePath;
info.UseShellExecute = false;
Process.Start(info);
预期行为
MainApp 在所有其他可见的窗口之前启动。
有谁知道如何处理这个问题?
编辑 1
我发现从 Shell32.dll 调用 extern 方法
void ToggleDesktop();
恢复所有窗口。但我不知道如何检查所有窗口是否最小化(触发此方法)。此外,它会恢复所有打开的窗口,因此不确定 MainApp 表单是否会是最先出现的。