通过类名和窗口名查找指定窗口

BOOL CALLBACK MyEnumProc(HWND hwnd, LPARAM lParam);
class CFindHWND
{public:CFindHWND();~CFindHWND();HWND FindWindow(HWND parent, CString wnd_class, CString wnd_name);BOOL EnumProc(HWND, LPARAM);
protected:BOOL IsEqual(HWND hwnd, CString wnd_class, CString wnd_name);
private:BOOL  is_finded;HWND finded_hwnd;CString find_wnd_class;CString find_wnd_name;
};CFindHWND::CFindHWND():is_finded(FALSE),finded_hwnd(FALSE)
{}CFindHWND::~CFindHWND()
{}HWND CFindHWND::FindWindow(HWND parent, CString wnd_class, CString wnd_name)
{find_wnd_class = wnd_class;find_wnd_name = wnd_name;EnumChildWindows(parent, MyEnumProc, (LPARAM)this);return finded_hwnd;
}BOOL CFindHWND::IsEqual(HWND hwnd, CString wnd_class, CString wnd_name)
{TCHAR tmp_name[MAX_PATH] = {0};TCHAR tmp_class[MAX_PATH] = {0};GetWindowText(hwnd, tmp_name, MAX_PATH);if (wnd_name.CompareNoCase(tmp_name) == 0) {GetClassName(hwnd, tmp_class, MAX_PATH);if (wnd_class.CompareNoCase(tmp_class) == 0) return TRUE;}return FALSE;
}BOOL CFindHWND::EnumProc(HWND hwnd, LPARAM)
{if (is_finded)return FALSE;if (IsEqual(hwnd,find_wnd_class, find_wnd_name)){is_finded = TRUE;finded_hwnd = hwnd;return FALSE;}if(::GetTopWindow(hwnd)){EnumChildWindows(hwnd, MyEnumProc, NULL);}return TRUE;
}BOOL CALLBACK MyEnumProc(HWND hwnd, LPARAM lParam)
{CFindHWND* ptr = (CFindHWND*)lParam;BOOL is_continue = FALSE;if(ptr){is_continue = ptr->EnumProc(hwnd, lParam);}return is_continue;
}

使用:

CFindHWND find;
HWND hwnd = find.FindWindowW(GetDesktopWindow()->m_hWnd, L"Chrome_RenderWidgetHostHWND", L"Chrome Legacy Window");

通过类名和窗口名查找指定窗口相关推荐

  1. C#查找指定窗口的子窗口的句柄

    用axWebBrowser加载HTML网页时,真正显示内容的窗体并不是axWebBrowser,而是其子窗口的子窗口一个名为Internet Explorer_Server的类.从spy++可知: 公 ...

  2. Windows Qt5 集成 OBS 实现录制应用窗口(可指定窗口内录制区域)

    OBS 的编译 编译参考链接 Demo 工程 链接:https://pan.baidu.com/s/1vVPfsSZfzs2LBcfjEgUr3A 提取码:3i4c: Qt 版本: 5.7.1 msv ...

  3. C# API之常用操作窗口类函数详解[查找所有窗口、获取目标句柄的类名、获取窗口文本、获取当前活动窗口、通过窗口句柄获取线程ID、获取指定窗口位置]

    /// <summary>/// 查找所有窗口(只要是在进程里面的)/// 如果不限制类名或者标题使用null代替/// </summary>/// <param nam ...

  4. 用C#调用Windows API向指定窗口发送按键消息

    为什么80%的码农都做不了架构师?>>>    用C#调用Windows API向指定窗口发送 一.调用Windows API. C#下调用Windows API方法如下: 1.引入 ...

  5. 用C#调用Windows API向指定窗口发送按键消息(转载)

    用C#调用Windows API向指定窗口发送按键消息 z 用C#调用Windows API向指定窗口发送 一.调用Windows API. C#下调用Windows API方法如下: 1.引入命名空 ...

  6. 易语言关闭指定窗口_易语言取外部程序指定窗口位置源码 _易语言源码网_易语言资源网...

    取外部程序指定窗口位置 系统结构:取窗口位置,取指定窗口句柄,窗口是否最大,窗口是否最小, ======窗口程序集1 |  | |  |------ _按钮1_被单击 |  | |  | ====== ...

  7. 打开新窗口的几种方式及target=_blank指定窗口名称

    打开新窗口的几种方式及target=_blank指定窗口名称   打开新窗口的几种方式: 1.form提交到新窗口  <form action="action.jsp" ta ...

  8. ffmpeg录屏/摄像头/指定窗口;别名alias设置

    关于ffmpeg的使用方法很多,我简单写一下今天我捣鼓的几个.因为我的项目中要用到录屏和录制摄像头,所以试了下.网上关于录制指定窗口的方法并不多,我也是找了好久,试了好久才试出来的. 好了,废话不多说 ...

  9. Python+selenium 自动化-通过窗口名切换窗口,如何获取当前窗口的title窗口名

    通过索引切换窗口 左边从0开始,-1是右边第一个窗口 windows = driver.window_handles driver.switch_to.window(windows[-1]) 通过窗口 ...

最新文章

  1. 干货丨机器学习和深度学习概念入门
  2. 客户端svn出现authorization failed异常
  3. relu函数_从 ReLU 到 GELU,一文概览神经网络的激活函数
  4. Cachefiled
  5. 降低前端业务复杂度新视角:状态机范式
  6. pureMVC简单示例及其原理讲解四(Controller层)
  7. 关于vmware虚拟机硬件里没有软盘驱动器,而操作系统里还有的解决方法
  8. win7中文版转英文版 只须下载安装语言包
  9. Notepad ++ 汉化版
  10. 详解24个经典股票技术指标(二)
  11. 简历写成这样,让我成为这一届的面霸
  12. 模块度(Modularity)与Fast Newman算法讲解与代码实现
  13. Android-PickerView实现全国地区选择
  14. Android基础之RemoteViews
  15. fiddle无法抓包小程序解答
  16. 土豆 GhostXP SP3 系统2012新年纯净版V1
  17. 用matlab实现蛇形,matlab蛇形机械手仿真建模
  18. unity ugui android 小键盘,Unity inputfield 实现显示 隐藏密码功能(在安卓中切换不打开下虚拟键盘)...
  19. 韩国网站的一些弱口令
  20. java面试专题(商城面试问题)

热门文章

  1. A - Wireless Network POJ - 2236
  2. matlab disp fprinr,matlab如何使输出结果更美观(symdisp函数——pretty函数升级版)
  3. mysql索引底层实现原理_mysql的索引底层之实现原理
  4. php statements,PHP PDOStatement::setAttribute讲解
  5. IDEA JAVA gradle等常见工具/包 踩坑记录
  6. WebApi2 知识点总结
  7. js高级程序设计(六)面向对象
  8. Discuz NT 架构剖析之Config机制
  9. poj1651(区间dp)
  10. SQL Server 查看对象的权限