可以从外部进程移动/调整窗口大小[C++/windows]

可以从外部进程移动/调整窗口大小[C++/windows],c++,windows,process,C++,Windows,Process,是否可以使用windows API从外部进程移动或调整窗口大小 例如,您将如何编写一个程序,列出当前打开的所有窗口,让用户选择其中两个窗口,然后让程序将它们并排放置在屏幕上?感谢Richard Criten指出了正确的方向 为了获得所有窗口的列表,可以使用EnumWindows和SetWindowPos来修改每个窗口的位置和分辨率 此示例将每个可见窗口向右移动50个像素: #include <Windows.h> #include <stdio.h> BOOL CALL

是否可以使用windows API从外部进程移动或调整窗口大小


例如,您将如何编写一个程序,列出当前打开的所有窗口,让用户选择其中两个窗口,然后让程序将它们并排放置在屏幕上?

感谢Richard Criten指出了正确的方向

为了获得所有窗口的列表,可以使用EnumWindows和SetWindowPos来修改每个窗口的位置和分辨率

此示例将每个可见窗口向右移动50个像素:

#include <Windows.h>
#include <stdio.h>

BOOL CALLBACK EnumWindowsProc(HWND hWnd, long lParam) {
    if(IsWindowVisible(hWnd)) {
        RECT rect;
        GetWindowRect(hWnd, &rect);
        SetWindowPos(hWnd, HWND_TOPMOST, rect.left + 50, rect.top, rect.right - rect.left, rect.bottom - rect.top, SWP_SHOWWINDOW);
    }
    return TRUE;
}

int main() {    
    EnumWindows(EnumWindowsProc, 0);
    return 0;
}

从EnumWindows开始,然后编写一些代码。如果您仍然有问题,请发布您在提问时所遇到的问题。如果您不一定需要使用Windows API从头开始编写代码,则可以使用自动热键编写许多内容,包括Windows操作。对用户对象的访问由关联的桌面和WindowsStation保护。通常是WinSta0 interactive WindowsStation的进程和默认桌面的线程。这些对象授予会话用户对登录会话SID的所有访问权限,但也可能有限制和进程完整性级别限制。@RichardCriten谢谢!这正是我想要的。我现在可以回答我自己的问题了^^尝试将其作为标准用户中等完整性运行,桌面上至少有一个提升窗口高完整性。UIPI策略阻止您访问高完整性窗口。