[C++]FindWindow,多个窗口名字一致 | 您所在的位置:网站首页 › 搜索子吧 › [C++]FindWindow,多个窗口名字一致 |
解决方案原链接https://www.oschina.net/question/1160676_2187843 方案 1.使用FindeWindow先找到第一个窗口 HWND hWnd = NULL; hWnd =::FindWindow(NULL, WindowName);2.使用FindWindowEx找接下来同名的窗口 hWnd = ::FindWindowEx(NULL, hWnd,NULL, WindowName); 函数原型:HWND FindWindowEx(HWND hwndParent,HWND hwndChildAfter,LPCTSTR lpszClass,LPCTSTR lpszWindow) hwndParent:要查找子窗口的父窗口句柄,如果hwnjParent为NULL,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口。 hwndChildAfter :子窗口句柄。从子窗口开始查找。子窗口必须为hwndPareRt窗口的直接子窗口而非后代窗口。如果HwndChildAfter为NULL,查找从hwndParent的第一个子窗口开始。如果hwndParent 和 hwndChildAfter同时为NULL,则函数查找所有的顶层窗口及消息窗口。 lpszClass:指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次调用theGlobaIAddAtom函数产生的全局成员。该成员为16位,必须位于lpClassName的低16位,高位必须为0。 lpszWindow:指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为 NULL,则为所有窗口全匹配。再加一个使用示例吧,下面这个是用来控制flash位置的 @2020.8.31 新增两个函数,辅助使用 HWND GetAppWnd(const char *AppTitle) { HWND hwnd=NULL; if (!AppTitle) { //无输入默认最顶端 hwnd = ::GetForegroundWindow(); } else { hwnd = ::FindWindow(NULL, AppTitle); } return hwnd; } CString GetAppRunTitle(HWND AppHwnd) { char title[MAX_PATH]; ::GetWindowText(AppHwnd, title, MAX_PATH); CString t= title; return t; }
|
CopyRight 2018-2019 实验室设备网 版权所有 |