替换Windows Shell或限制应用程序窗口大小
本文关键字:应用程序 窗口大小 Windows Shell 替换 | 更新日期: 2023-09-27 18:16:26
我正在为家庭用户开发一个应用程序。这个应用程序包括完全取代windows资源管理器为自定义应用程序。
我想模仿任务栏的行为。例如,当您单击"记事本"中的"最大化"按钮时,它不会与任务栏重叠。
我已经尝试使用api到AppBar,然而,AppBar api不工作时,windows资源管理器不运行和其他窗口重叠我的任务栏。
你知道我该怎么做吗?如果我能限制最大化窗口的大小。问题是其他应用程序并不总是由我编写的。
我发现了一个使用win32 api SystemParametersInfo的例子。这样,我可以定义一个区域,其他应用程序将适合和留下一个空间,我的窗体,即使其他应用程序是最大化的。
链接到github
public static void MakeNewDesktopArea()
{
// Save current Working Area size
m_rcOldDesktopRect.left = SystemInformation.WorkingArea.Left;
m_rcOldDesktopRect.top = SystemInformation.WorkingArea.Top;
m_rcOldDesktopRect.right = SystemInformation.WorkingArea.Right;
m_rcOldDesktopRect.bottom = SystemInformation.WorkingArea.Bottom;
// Make a new Workspace
WinAPI.RECT rc;
rc.left = SystemInformation.VirtualScreen.Left + 150;
rc.top = SystemInformation.VirtualScreen.Top; // We reserve the 24 pixels on top for our taskbar
rc.right = SystemInformation.VirtualScreen.Right;
rc.bottom = SystemInformation.VirtualScreen.Bottom - 101;
WinAPI.SystemParametersInfo((int)WinAPI.SPI.SPI_SETWORKAREA, 0, ref rc, 0);
}