C++ 获取窗口句柄

C++ 获取窗口句柄1、使用FindWindow函数获取窗口句柄示例:使用FindWindow函数获取窗口句柄,然后获得窗口大小和标题,并且移动窗口到指定位置。[html] viewplaincopy#include Windows.h>  #include stdio.h>  #include string.h>  #include iostre

大家好,又见面了,我是你们的朋友全栈君。

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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158958.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • cpu性能天梯图2022「建议收藏」

    cpu性能天梯图2022「建议收藏」下方为排名前30的CPU天梯图,为方便大家查看更多CPU具体型号的排名和评分,请看天梯图后面的图表。cpu新品活动388红包等你抢机会不容错过http://www.adiannao.cn/dnAMDEPYC7763,87,767AMDEPYC7J13,86,006AMDEPYC7713,85,947AMDRyzenThreadripperPRO3995WX,85,365AMDRyzenThreadripper3990X,81,086AMDEPY

  • js替换换行符

    js替换换行符将换行符去掉.replace(/\\r\\n/g,”);

  • https的原理「建议收藏」

    https的原理「建议收藏」看完这篇文章,我奶奶都懂了https的原理|一起编程网 …

  • pycharm如何设置背景图片_微信主题背景图片

    pycharm如何设置背景图片_微信主题背景图片好看的编译器能使我们愉快的完成编码工作,那么我们能不能给我们的编译器设置一个背景图片的呢???详细步骤1.打开我们的PyCharm,File–>Settings。2.Apperence–>BackgroundImage…。3.选择背景图片的路径,点击下方灰色的方块调整背景图片透明度,点击Ok,点击Ok。4.设置成功。…

  • java如何打印数组的值,Java打印数组元素的值[通俗易懂]

    java如何打印数组的值,Java打印数组元素的值[通俗易懂]本篇文章帮大家学习java打印数组元素的值,包含了Java打印数组元素的值使用方法、操作技巧、实例演示和注意事项,有一定的学习价值,大家可以用来参考。以下实例演示了如何通过重载MainClass类的printArray方法输出不同类型(整型,双精度及字符型)的数组:publicclassMainClass{publicstaticvoidprintArray(Integer[…

  • 什么?女朋友生气哄不好?那是你没有这款神器!

    什么?女朋友生气哄不好?那是你没有这款神器!在一个阳光明媚的周日,我打开窗户呼吸了一口新鲜空气。阳光灿烂,岁月静好,又是一个约女朋友出去爬山吃饭看电影的好日子。想到女朋友的大眼睛,我脸上不禁洋溢起了幸福的微笑。打开微信,给女朋友发出去一个美好

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号