MFC 获取窗口句柄

MFC 获取窗口句柄1、使用FindWindow函数获取窗口句柄示例:使用FindWindow函数获取窗口句柄,然后获得窗口大小和标题,并且移动窗口到指定位置。#include<Windows.h>#include<stdio.h>#include<string.h>#include<iostream.h>intmain(intargc,char*argv[]){ //根据窗口名获取QQ游戏登录窗口句柄 HWNDhq=FindWind

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

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

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

#include <Windows.h>
#include <stdio.h>
#include <string.h>
#include <iostream.h>
 
int main(int argc, char* argv[])
{
	//根据窗口名获取QQ游戏登录窗口句柄
	HWND hq=FindWindow(NULL,"QQ2012");	
 
	//得到QQ窗口大小
	RECT rect;  
	GetWindowRect(hq,&rect); 	
	int w=rect.right-rect.left,h=rect.bottom-rect.top;
	cout<<"宽:"<<w<<" "<<"高:"<<h<<endl;
	
	//移动QQ窗口位置
	MoveWindow(hq,100,100,w,h,false);
	
	//得到桌面窗口
	HWND hd=GetDesktopWindow();
	GetWindowRect(hd,&rect); 	
	w=rect.right-rect.left;
	h=rect.bottom-rect.top;
	cout<<"宽:"<<w<<" "<<"高:"<<h<<endl;
	
	return 0;
}

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

示例:

#include "stdafx.h"
#include <Windows.h>
#include <stdio.h>
#include <tchar.h>
#include <string.h>
#include <iostream.h>
 
//EnumChildWindows回调函数,hwnd为指定的父窗口
BOOL CALLBACK EnumChildWindowsProc(HWND hWnd,LPARAM lParam)
{
	char WindowTitle[100]={0};    
	::GetWindowText(hWnd,WindowTitle,100);
	printf("%s\n",WindowTitle);
    
	return true;   
}
 
//EnumWindows回调函数,hwnd为发现的顶层窗口
BOOL CALLBACK EnumWindowsProc(HWND hWnd,LPARAM lParam)
{
	if (GetParent(hWnd)==NULL && IsWindowVisible(hWnd) )  //判断是否顶层窗口并且可见
	{
		char WindowTitle[100]={0};    
		::GetWindowText(hWnd,WindowTitle,100);
		printf("%s\n",WindowTitle);
 
		EnumChildWindows(hWnd,EnumChildWindowsProc,NULL); //获取父窗口的所有子窗口
	}
	
	return true;   
}
 
int main(int argc, _TCHAR* argv[])
{
	//获取屏幕上所有的顶层窗口,每发现一个窗口就调用回调函数一次
    EnumWindows(EnumWindowsProc ,NULL );
 
	return 0;
}

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

示例:

#include "stdafx.h"
#include <Windows.h>
#include <stdio.h>
#include <tchar.h>
#include <string.h>
#include <iostream.h>
 
int main(int argc, _TCHAR* argv[])
{	
	//得到桌面窗口
	HWND hd=GetDesktopWindow();
 
	//得到屏幕上第一个子窗口
	hd=GetWindow(hd,GW_CHILD);
	char s[200]={0};
 
	//循环得到所有的子窗口
	while(hd!=NULL)
	{
		memset(s,0,200);
		GetWindowText(hd,s,200);
		/*if (strstr(s,"QQ2012"))
		{
			cout<<s<<endl;
			SetWindowText(hd,"My Windows");
		}*/
		cout<<s<<endl;
		
		hd=GetNextWindow(hd,GW_HWNDNEXT);
	}
	return 0;
}

 

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162535.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python爬虫学习教程,短短25行代码批量下载豆瓣妹子图片

    python爬虫学习教程,短短25行代码批量下载豆瓣妹子图片python爬虫学习教程,短短25行代码批量下载豆瓣妹子图片、非常简短,代码不是很多非常适合新手练习!学习python、python爬虫过程中有不懂的可以加入我的python零基础系统学习交流秋秋qun:前面是934,中间109,后面是170,与你分享Python企业当下人才需求及怎么从零基础学习Python,和学习什么内容。相关学习视频资料、开发工具都有分享!代码展示:#!/u…

    2022年9月14日
    1
  • 关于python中的+、+=、*、*=[通俗易懂]

    关于python中的+、+=、*、*=[通俗易懂]关于python中的+、+=、*、*=

    2022年4月22日
    42
  • c中的变量

    c中的变量

    2022年3月6日
    39
  • 曼昆 《经济学原理》(第5版)_曼昆经济学原理第几版好

    曼昆 《经济学原理》(第5版)_曼昆经济学原理第几版好第一章经济学十大原理在本章中你将——知道经济学研究稀缺性资源配置考察人们面临的一些交替关系知道机会成本的含义懂得在作出决策时如何运用边际推理讨论激励如何影响人们的行为考虑为什么人们或国家之间的交易可以使各方面受益-9经济学原理第五版 讨论为什么市场是一种良好的、但并不是完善的资源配置方式了解是什么因

    2022年9月19日
    3
  • Redis创建高可用集群教程【Windows环境】

    模仿的过程中,加入自己的思考和理解,也会有进步和收获。在这个互联网时代,在高并发和高流量可能随时爆发的情况下,单机版的系统或者单机版的应用已经无法生存,越来越多的应用开始支持集群,支持分布式部署了。而Redis作为缓存服务器的比较出色的一员,它在出生的时候就被设置支持集群,本篇就是介绍Redis集群的介绍和搭建过程!使用的平台是Windows,搭建的思路和Linux上基本一致! 墙…

    2022年2月27日
    41
  • c# 连接数据库2 OleDbDataAdapter DataSet[通俗易懂]

    c# 连接数据库2 OleDbDataAdapter DataSet[通俗易懂]    privatevoidbutton2_Click(objectsender,EventArgse)    {      stringcon=@"Provider=Microsoft.Jet.OleDb.4.0;DataSource=fruit.mdb";      OleDbConnectiondbconn=newO…

    2025年7月23日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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