窗口枚举:
EnumWindows: EnumWindows只能枚举顶级窗口,需要递归调用EnumChildWindows才能获得进程的所有窗口。
EnumDesktopWindows:
枚举与指定桌面相关联的所有顶级窗口。它把每个窗口的句柄,依次传递到应用程序定义
回调函数
。
EnumThreadWindows : 枚举指定线程的窗口
FindWindow:获取窗口
FindWindowEx:获取窗口
GetWindowText:获取窗口标题 也可以 SendMessage(hWnd, WM_GETTEXT, nLen, szOut);
GetWindowThreadProcessId : 获取窗口的线程ID
窗口枚举:EnumWindows: EnumWindows只能枚举顶级窗口,需要递归调用EnumChildWindows才能获得进程的所有窗口。EnumDesktopWindows:
public partial class QQAutoSendMsgForm : Form
private List<QQChatWindows> _QQListWindows = new List<QQChatWindows>();
//BOOL CALLBACK EnumChildProc(_In_ HWND hwnd, _In_ LPARAM lParam)
// char szTitle[MAX_PATH] = { 0 };
// char
1.窗口信息
MS为我们提供了打开特定桌面和枚举桌面窗口的函数。
hDesk=OpenDesktop(lpszDesktop,0,FALSE,DESKTOP_ENUMERATE);
//打开我们默认的Default桌面;
EnumDesktopWindows(hDesk,(WNDENUMPROC)EnumWindowProc,0);
//枚举打开桌
因为最近用到虚拟桌面做应用后台开发,创建虚拟桌面和使用模拟桌面的实现不在同一个线程里,会出现FindWindowA找不到应用的情况。在百度上找了好久,没有找到使用例子,我是这样实现的
一、枚
举出所有的桌面
二、把桌面的句柄放在一个vector中
三、遍历桌面句柄的vector,每次遍历都SetThreadDesktop设置当前线程的桌面,然后调用FindWindowA
部分参考代码
BOOL WINAPI TopLevelEnum(HWND hwnd, LPARAM lParam)
BOOL CALLBACK EnumThreadWndProc(HWND hwnd, LPARAM lParam )
std::listHWND>* plist = (std::listHWND>*)lParam;
plist->push_back(hwnd);
return true;
int main(void)
CWnd* pWnd = CW
本文是仿照Trayconizer软件制作。
本文的最小化工具是能够随意控制一个程序并使之最小化,恢复的软件。如在命令行中运行:
Trayconizer.exe C;\windows\notepad.exe;
将会打开一个记事本,当点击最小化按钮时,会影藏到后台运行,并在托盘中显示记事本的图标,双击记事本恢复窗口,右键点击弹出“Restore”,“Close”菜单。当记事本关闭后,工具软件也
<br />(1)EnumWindow函数功能:<br />枚
举所有顶级
窗口。函数调用后,系统为每个顶级
窗口调用一次回调函数,参数为
窗口的句柄和一个附加参数。可以在回调函数中用GetWindowText函数得到
窗口标题,再用strstr等函数查找关键字的方式判断某
窗口的存在。<br />函数原型:<br />BOOL EnumWindows(<br />
WNDENUMPROC lpEnumFunc, // pointer to callback function<br />
您可以使用Windows API中的EnumWindows函数来进行开源窗口枚举。该函数会枚举当前系统中所有顶级窗口,并且可以通过回调函数来获取每个窗口的句柄。以下是一个示例代码,用于枚举所有顶级窗口并打印它们的标题:
``` c++
#include <Windows.h>
#include <iostream>
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
char title[256];
GetWindowTextA(hwnd, title, sizeof(title));
std::cout << title << std::endl;
return TRUE;
int main()
EnumWindows(EnumWindowsProc, NULL);
return 0;
在上面的代码中,EnumWindows函数用于开始枚举所有顶级窗口,而EnumWindowsProc回调函数则用于获取每个窗口的句柄,并且通过GetWindowText函数获取窗口标题信息并打印到控制台上。
真的只是略懂而已: