获取窗口句柄

图标

豆瓜

豆瓜网

豆瓜网专栏

首发
豆瓜 图标 2020-07-24 11:44:33

windows获取窗口句柄


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


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


复制代码

 1  

 2 #include <Windows.h>  

 3 #include <stdio.h>  

 4 #include <string.h>  

 5 #include <iostream.h>  

 6   

 7 int main(int argc, char* argv[])  

 8 {  

 9     //根据窗口名获取QQ游戏登录窗口句柄  

10     HWND hq=FindWindow(NULL,"QQ2012");    

11   

12     //得到QQ窗口大小  

13     RECT rect;    

14     GetWindowRect(hq,&rect);      

15     int w=rect.right-rect.left,h=rect.bottom-rect.top;  

16     cout<<"宽:"<<w<<" "<<"高:"<<h<<endl;  

17       

18     //移动QQ窗口位置  

19     MoveWindow(hq,100,100,w,h,false);  

20       

21     //得到桌面窗口  

22     HWND hd=GetDesktopWindow();  

23     GetWindowRect(hd,&rect);      

24     w=rect.right-rect.left;  

25     h=rect.bottom-rect.top;  

26     cout<<"宽:"<<w<<" "<<"高:"<<h<<endl;  

27       

28     return 0;  

29 }  

复制代码

 


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


示例:


 


 


复制代码

 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函数得到所有的子窗口

示例:


复制代码

 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;  

33 } 


本文由豆瓜网专栏作家 豆瓜 投稿发布,并经过豆瓜网编辑审核。

转载此文章须经作者同意,并附上出处(豆瓜网)及本页链接。

若稿件文字、图片、视频等内容侵犯了您的权益,请联系本站进行 投诉处理

相关搜索

获取窗口句柄
图标 图标

豆瓜

豆瓜网

豆瓜网专栏

  • 获取窗口句柄

    图标
    豆瓜 图标 · 今天 11:44:33 · 6浏览
  • declare_dynamic

    图标
    豆瓜 图标 · 今天 11:43:15 · 9浏览
  • 动态规划背包问题算法说明

    图标
    豆瓜 图标 · 今天 11:42:37 · 13浏览
  • 全部评论

    豆瓜

    豆瓜网

    豆瓜网专栏

  • 获取窗口句柄
  • declare_dynamic
  • 动态规划背包问题算法说明
  • linux端口映射说明
  • webshell河马查杀工具
  • 我来说两句