[C++]FindWindow,多个窗口名字一致 您所在的位置:网站首页 搜索子吧 [C++]FindWindow,多个窗口名字一致

[C++]FindWindow,多个窗口名字一致

2023-08-29 19:23| 来源: 网络整理| 查看: 265

解决方案原链接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 实验室设备网 版权所有