不同的窗口最小化不同壳的行为

时间:2014-03-30 23:55:40

标签: windows winapi windows-7 registry

我有一个自助服务终端式应用程序,用户/操作员可以使用特殊键选择应用程序。

我有一个管理应用程序,它监视密钥(通过另一个API),并尝试根据需要最小化和最大化其他应用程序窗口。

对于任何给定的应用程序,伪代码如下:

  foreach(var process in NotCurrentProcess())
  {
    ShowWindowAsync(process.MainWindowHandle, SW_FORCEMINIMIZE);
  }
  ShowWindowAsync(myProcess.MainWindowHandle, SW_SHOWMAXIMIZED);

这适用于测试。

对于部署,我的应用程序成为HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

的shell

现在,当我最小化一个应用程序时,它没有任务栏可以去,它漂浮在顶部窗口之上。

Floating minimized windows

任何人都可以帮助解决根本原因/解决方法吗?

1 个答案:

答案 0 :(得分:1)

我假设您只是想隐藏窗口,因为没有任务栏可以将它们停靠,对吧?

而不是最小化应用程序窗口,只需将其放在屏幕外像现在使用SetWindowPos的左侧10000像素。或者,您可以使用SW_HIDE标志隐藏每个窗口到您的ShowWindow调用。

for (process in NotCurrentProcess())
{
    SetWindowPos(process.MainWindowHandle, HWND_BOTTOM, -10000, 0, 0, 0, SWP_NOSIZE|SWP_NOZORDER);

    // OR call ShowWindow(process.MainWindowHandle, SW_HIDE);

}
SetWindowPos(myProcess.MainWindowHandle, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE);
ShowWindowAsync(myProcess.MainWindowHandle, SW_SHOWMAXIMIZED);