Windows 7 - 启动进程前台

时间:2017-12-03 18:05:59

标签: c# windows winforms maximize-window minimized

我的问题出现在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表单是否是最前面的窗口。

0 个答案:

没有答案