我的问题出现在Windows 7上。
背景
我有两个应用程序:
a)MainApp - 软件应始终在前台运行,最大化(没有任务栏)
b)Watchdog - 如果MainApp正常运行则监视MainApp并在关闭MainApp实例时启动它。
问题:
一切都运作良好。但我注意到有时在Windows 7上MainApp开始最小化 - 它在任务栏上显示图标,WindowState是"最大化" (在日志中检查),但在从任务栏恢复之前,表单不可见。 Windows 10上没有出现问题(其他未选中)。
重现步骤 我设法通过以下方式重现了这个问题:
a)运行Watchdog + 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表单是否是最前面的窗口。