Can C++;是否用于与正在运行的应用程序交互? 我想搞砸C++,并构建一些可以与其他窗口交互的桌面应用程序。类似于窗口平铺管理器(例如,最小化当前窗口、将窗口捕捉到网格中等)。这是否可能在C++中实现?我只使用过命令行的东西,所以有没有一个好的框架来进行这种工作?在Windows中,任何方向正确的事情,或者我如何完成这样的事情,都将非常棒。

Can C++;是否用于与正在运行的应用程序交互? 我想搞砸C++,并构建一些可以与其他窗口交互的桌面应用程序。类似于窗口平铺管理器(例如,最小化当前窗口、将窗口捕捉到网格中等)。这是否可能在C++中实现?我只使用过命令行的东西,所以有没有一个好的框架来进行这种工作?在Windows中,任何方向正确的事情,或者我如何完成这样的事情,都将非常棒。,c++,desktop-application,C++,Desktop Application,您可以使用EnumWindows迭代每个窗口。它从最上面的窗口开始向下移动。下面的代码将在每个可见窗口中循环并打印出winow的文本 #include <windows.h> #include <stdio.h> BOOL CALLBACK EnumWindowsProc(HWND hWnd, long lParam) { char buff[255]; if (IsWindowVisible(hWnd)) { GetWindowTex

您可以使用
EnumWindows
迭代每个窗口。它从最上面的窗口开始向下移动。下面的代码将在每个可见窗口中循环并打印出winow的文本

#include <windows.h>
#include <stdio.h>

BOOL CALLBACK EnumWindowsProc(HWND hWnd, long lParam) {
    char buff[255];

    if (IsWindowVisible(hWnd)) {
        GetWindowText(hWnd, (LPSTR) buff, 254);
        printf("%s\n", buff);
    }
    return TRUE;
}

int main() {
    EnumWindows(EnumWindowsProc, 0);
    return 0;
}
#包括
#包括
BOOL回调EnumWindowsProc(HWND HWND,长lParam){
字符buff[255];
如果(IsWindowVisible(hWnd)){
GetWindowText(hWnd,(LPSTR)buff,254);
printf(“%s\n”,浅黄色);
}
返回TRUE;
}
int main(){
EnumWindows(EnumWindowsProc,0);
返回0;
}
由于您拥有每个窗口的句柄,因此可以通过向它们发送消息来执行进一步的操作


我创建了一个名为的工具来处理窗口和形状,它使用了这种方法


我生成一个线程,并将每个窗口及其坐标和大小存储在一个哈希表中。然后我迭代并比较它们当前的位置和大小与前一个位置和大小,并执行回调,让我的主线程知道是否创建了一个窗口
移动了
重新发布了
,或者在Windows上,您可以使用该功能激活窗口或进程。

这个问题与您要创建的应用程序使用的操作系统或GUI框架密切相关

<>如果OS支持这种交互的接口,如果有一定的语言绑定到GUI控制API(C/C++),它肯定可以与C++一起使用。 通常,从代码中使用这些API不是一个好主意,而是通过一个C++库来抽象低级别的位和操作。
在下一个层次上,还有可用的库,它们甚至支持各种特定于操作系统的GUI和系统控制API的抽象。如果您正在寻找操作系统可移植代码,请查看示例。

它肯定可以。这取决于操作系统和窗口管理器是否允许您使用(例如,它提供了必要的功能)。通常是。但正如Drew所说,这取决于操作系统和窗口管理器,所以请让我们知道这一点,我们可能会进一步帮助您。有些API可以让您轻松地完成这项工作,而有些API可能有点困难。它是一个多平台的C++ GUI应用框架,具有Windows/桌面管理功能。