SetWindowPlacement没有移动某些窗口

时间:2016-03-18 13:34:20

标签: windows winapi

我正在编写一个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,这对这些窗口没有任何影响(但在我试过的所有其他窗口上都有效)。

为什么那些特定的窗口表现不同?有什么替代方法可以移动那些窗户吗?

1 个答案:

答案 0 :(得分:2)

谢谢Jonathan和Hans。那就是问题所在。如果我提升我的代码,它可以在所有窗口上运行。