我有一个自助服务终端式应用程序,用户/操作员可以使用特殊键选择应用程序。
我有一个管理应用程序,它监视密钥(通过另一个API),并尝试根据需要最小化和最大化其他应用程序窗口。
对于任何给定的应用程序,伪代码如下:
foreach(var process in NotCurrentProcess())
{
ShowWindowAsync(process.MainWindowHandle, SW_FORCEMINIMIZE);
}
ShowWindowAsync(myProcess.MainWindowHandle, SW_SHOWMAXIMIZED);
这适用于测试。
对于部署,我的应用程序成为HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
现在,当我最小化一个应用程序时,它没有任务栏可以去,它漂浮在顶部窗口之上。
任何人都可以帮助解决根本原因/解决方法吗?
答案 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);