我正在编写一个Windows 10 C#程序来保存和恢复打开窗口的位置和大小(无论是显示还是最小化)。以下循环几乎适用于所有窗口,但不适用于资源监视器或计算机管理窗口:
foreach (KeyValuePair<HWND, InfoWindow> entry in openWindows)
{
IntPtr hWnd = entry.Key;
Rectangle rect = entry.Value.Rect;
WINDOWPLACEMENT wpl = new WINDOWPLACEMENT();
if (!GetWindowPlacement(hWnd, ref wpl)) continue;
wpl.rcNormalPosition = rect;
SetWindowPlacement(hWnd, ref wpl);
}
SetWindowPlacement
函数似乎对资源监视器或计算机管理窗口的位置或大小没有影响。我也尝试使用SetWindowPos
,这对这些窗口没有任何影响(但在我试过的所有其他窗口上都有效)。
为什么那些特定的窗口表现不同?有什么替代方法可以移动那些窗户吗?
答案 0 :(得分:2)
谢谢Jonathan和Hans。那就是问题所在。如果我提升我的代码,它可以在所有窗口上运行。