C++ 获取窗口句柄

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

1、使用FindWindow函数获取窗口句柄

示例:使用FindWindow函数获取窗口句柄,然后获得窗口大小和标题,并且移动窗口到指定位置。

[html]  view plain copy
  1. #include <Windows.h>  
  2. #include <stdio.h>  
  3. #include <string.h>  
  4. #include <iostream.h>  
  5.   
  6. int main(int argc, char* argv[])  
  7. {  
  8.     //根据窗口名获取QQ游戏登录窗口句柄  
  9.     HWND hq=FindWindow(NULL,"QQ2012");    
  10.   
  11.     //得到QQ窗口大小  
  12.     RECT rect;    
  13.     GetWindowRect(hq,&rect);      
  14.     int w=rect.right-rect.left,h=rect.bottom-rect.top;  
  15.     cout<<"宽:"<<w<<" "<<"高:"<<h<<endl;  
  16.       
  17.     //移动QQ窗口位置  
  18.     MoveWindow(hq,100,100,w,h,false);  
  19.       
  20.     //得到桌面窗口  
  21.     HWND hd=GetDesktopWindow();  
  22.     GetWindowRect(hd,&rect);      
  23.     w=rect.right-rect.left;  
  24.     h=rect.bottom-rect.top;  
  25.     cout<<"宽:"<<w<<" "<<"高:"<<h<<endl;  
  26.       
  27.     return 0;  
  28. }  

2、使用EnumWindows和EnumChildWindows函数以及相对的回调函数EnumWindowsProc和EnumChildWindowsProc获取所有顶层窗口以及它们的子窗口(有些窗口做了特殊处理,比如QQ是不能通过这个方法获得的)

示例:

[html]  view plain copy
  1. #include "stdafx.h"  
  2. #include <Windows.h>  
  3. #include <stdio.h>  
  4. #include <tchar.h>  
  5. #include <string.h>  
  6. #include <iostream.h>  
  7.   
  8. //EnumChildWindows回调函数,hwnd为指定的父窗口  
  9. BOOL CALLBACK EnumChildWindowsProc(HWND hWnd,LPARAM lParam)  
  10. {  
  11.     char WindowTitle[100]={0};      
  12.     ::GetWindowText(hWnd,WindowTitle,100);  
  13.     printf("%s\n",WindowTitle);  
  14.       
  15.     return true;     
  16. }  
  17.   
  18. //EnumWindows回调函数,hwnd为发现的顶层窗口  
  19. BOOL CALLBACK EnumWindowsProc(HWND hWnd,LPARAM lParam)  
  20. {  
  21.     if (GetParent(hWnd)==NULL && IsWindowVisible(hWnd) )  //判断是否顶层窗口并且可见  
  22.     {  
  23.         char WindowTitle[100]={0};      
  24.         ::GetWindowText(hWnd,WindowTitle,100);  
  25.         printf("%s\n",WindowTitle);  
  26.   
  27.         EnumChildWindows(hWnd,EnumChildWindowsProc,NULL); //获取父窗口的所有子窗口  
  28.     }  
  29.       
  30.     return true;     
  31. }  
  32.   
  33. int main(int argc, _TCHAR* argv[])  
  34. {  
  35.     //获取屏幕上所有的顶层窗口,每发现一个窗口就调用回调函数一次  
  36.     EnumWindows(EnumWindowsProc ,NULL );  
  37.   
  38.     return 0;  
  39. }  

3、使用GetDesktopWindow和GetNextWindow函数得到所有的子窗口

示例:

[html]  view plain copy
  1. #include "stdafx.h"  
  2. #include <Windows.h>  
  3. #include <stdio.h>  
  4. #include <tchar.h>  
  5. #include <string.h>  
  6. #include <iostream.h>  
  7.   
  8. int main(int argc, _TCHAR* argv[])  
  9. {     
  10.     //得到桌面窗口  
  11.     HWND hd=GetDesktopWindow();  
  12.   
  13.     //得到屏幕上第一个子窗口  
  14.     hd=GetWindow(hd,GW_CHILD);  
  15.     char s[200]={0};  
  16.   
  17.     //循环得到所有的子窗口  
  18.     while(hd!=NULL)  
  19.     {  
  20.         memset(s,0,200);  
  21.         GetWindowText(hd,s,200);  
  22.         /*if (strstr(s,"QQ2012"))  
  23.         {  
  24.             cout<<s<<endl;  
  25.             SetWindowText(hd,"My Windows");  
  26.         }*/  
  27.         cout<<s<<endl;  
  28.           
  29.         hd=GetNextWindow(hd,GW_HWNDNEXT);  
  30.     }  
  31.   
  32.     return 0;  


转自:http://blog.csdn.net/dazhong159/article/details/7903382
干货分享:用一百行代码做一个C/C++表白小程序,程序员的浪漫! 前言:很多时候,当别人听到你是程序员的时候。第一印象就是,格子衫、不浪漫、直男。但是程序员一旦浪漫起来,真的没其他人什么事了。什么纪念日,生日,情人节,礼物怎么送? 做一个浪漫的程序给她,放上你们照片,找一段有符合情景的音乐,既有心意,又有浪漫。所以说,程序猿的浪漫你根本想象不到啊。 1.开发工具: vs vc(任选一个) 2.准备材料 : a.一首音乐 (注意:音乐要求重命名为 “x” ) b.20张图片(注意: 图片要求重命名为 “1” "2" ”3“ ........ 阅读详情

相关推荐

第四课 C++教程:窗口句柄和文本操作

在 Windows 操作系统中,每个窗口都有一个唯一的标识符,称为窗口句柄窗口句柄是一个32位的值,可以用来识别和操作窗口

xwx0316的博客 1906

获取窗口句柄

1、使用FindWindow函数获取窗口句柄 示例:使用FindWindow函数获取窗口句柄,然后获得窗口大小和标题,并且移动窗口到指定位置。 #include <Windows.h> #include <stdio.h> #include <string.h> #include <iostream.h> int main(int argc, ...

weixin_30835649的博客 1742

使用C++编程语言获取窗口句柄

总结一下,通过使用C++编程语言以及Windows API提供的函数,我们可以方便地获取窗口句柄获取窗口句柄后,我们可以在Windows平台上进行各种窗口操作,实现更复杂的功能。在Windows操作系统中,窗口句柄是一个唯一标识窗口的值。通过获取窗口句柄,我们可以进行各种窗口操作,如改变窗口的位置、大小、标题等。本文将介绍如何使用C++编程语言获取窗口句柄,并提供相应的源代码示例。要获取窗口句柄,我们可以使用Windows API提供的函数来实现。,则表示未找到指定标题的窗口,我们同样使用。

FuJavascript的博客 2080

c++获取窗口句柄的方法

1

闲时不练功,忙时一场空 7941

C++中各种获取窗口句柄的方法

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33856370的博客 3859

c++获取子类窗口句柄位置_C++中各种获取窗口句柄的方法

AfxGetMainWndAfxGetMainWnd获取自身窗口句柄HWND hWnd = AfxGetMainWnd()->m_hWnd;GetTopWindow函数功能:该函数检查与特定父窗口相联的子窗口z序(Z序:垂直屏幕的方向,即叠放次序),并返回在z序顶部的子窗口句柄。函数原型:HWND GetTopWindow(HWND hWnd);参数:hWnd:被查序的父窗口句柄。如果该...

weixin_32540913的博客 1482

c++获取子类窗口句柄位置_C++根据进程获取窗口句柄

// processenum.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include #include #include #include #pragma comment ( lib, "Psapi.lib" )HWND lmshwnd;BOOL CALLBAC...

weixin_36147808的博客 454

C++ Windows 下 根据进程名获取进程ID 以及该进程下所有窗口句柄

转载自博客:https://www.cnblogs.com/tangxin-blog/p/6077746.html #include <windows.h> #include <stdint.h> #include <tlhelp32.h> #include <stdio.h> #include <iostream> #inc...

迷雾森林的专栏 5027

c++获取子类窗口句柄位置_C++怎么获取指定窗口句柄某点像素值

C++怎么获取指定窗口句柄某点像素值关注:197答案:2mip版解决时间 2021-01-15 04:51提问者夢岭杺2021-01-14 20:40C++初学,比如我打开了很多窗口,但我想得到其中一个窗口里某点的像素值,可以得到这个窗口句柄。最佳答案二级知识专家癡情菂尐豬豬2021-01-14 21:50#include#includetypedefCWinTraitsFrame...

weixin_31880471的博客 357

c++获取子类窗口句柄位置_C/C++ Windows API——获取鼠标位置的窗口句柄

// SpyDemo.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #define MAX_TEXT_LEN 255BOOL CALLBACK EnumChildProcess(HWND hwnd, LPARAM lParam){if (hwnd == NULL) {return FALSE;}BOOL ret;RECT rect;ret = ...

weixin_40006185的博客 671

C++ 获取窗口句柄,给窗口设置全局热键

最近没事学习了下C++,用MFC做了一个小程序:点击应用程序窗口获取程序句柄,给应用程序设置全局热键,隐藏程序。 思路:   1. 截获鼠标点击事件。   2. 获取点击的窗口句柄。   3. 设置全局热键。   4. 响应热键的事件。 实现:   1. 截获鼠标点击事件。     使用SetCapture()将所有的鼠标消息据为己有。在捕获过程中,你却无法对其他的鼠标消息做出反应。Relea...

weixin_30568715的博客 651

c++获取子类窗口句柄位置_通过窗口句柄获取程序路径

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Runtime.InteropServices;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows;usingSystem.Windows.Media;usingSystem....

weixin_33421411的博客 524

C++ 遍历寻找指定进程,通过进程ID获取窗口句柄,以及HWND与CWnd之间转换

问题: 如题,如何遍历寻找指定进程?如何通过进程ID获取窗口句柄?HWND与CWnd之间是如何转换的? 解决: 1、HWND与CWnd之间的转换:使用 GetSafeHwnd 和 CWnd::FromHandle // 已知 CWnd 获取 HWND CWnd* pCWnd; HWND hwnd = pCWnd->m_hWnd; HWND hwnd1 = pCWnd->GetSafeHwnd(); // 已知 HWND 获取 CWnd HWND hwnd2; CWnd* pCwnd1 = CW

m0_43605481的博客 4710
上一篇: 在DLL中获取主进程窗口句柄
下一篇: VC API常用函数简单例子大全(1-89)
Entre_Lee
博客等级 码龄11年 13粉丝 4原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值