0

我的问题发生在 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 表单是否会是最先出现的。

4

0 回答 0