java获取窗口_获取窗口句柄[通俗易懂]

java获取窗口_获取窗口句柄[通俗易懂]1、使用FindWindow函数获取窗口句柄示例:使用FindWindow函数获取窗口句柄,然后获得窗口大小和标题,并且移动窗口到指定位置。#include#include#include#includeintmain(intargc,char*argv[]){//根据窗口名获取QQ游戏登录窗口句柄HWNDhq=FindWindow(NULL,”QQ2012″);//得到QQ窗口…

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

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

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

#include

#include

#include

#include

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<

//移动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<

return 0;

}

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

示例:

#include “stdafx.h”

#include

#include

#include

#include

#include

//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

#include

#include

#include

#include

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<

SetWindowText(hd,”My Windows”);

}*/

cout<

hd=GetNextWindow(hd,GW_HWNDNEXT);

}

return 0;

}

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

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

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


相关推荐

  • nginx重启服务器服务命令

    nginx重启服务器服务命令systemctlrestartnginx.service

    2022年6月19日
    19
  • 互联网金融风控模型「建议收藏」

    互联网金融风控模型「建议收藏」一、市场调研目前市面主流的风控模型1、互联网金融前10名排行榜(数据截止日期2017-09-12)互联网金融公司排名分别是蚂蚁金服、陆金所、京东金融、苏宁金融、百度金融、腾讯理财通、宜信、钱大掌柜、万达金融和网易理财。1.1蚂蚁金服1.1.1大数据技术对接第三方征信公司芝麻信用分,通过用户信用历史、行为偏好、履约能力、身份特质、人脉关系五个维度对…

    2022年6月14日
    24
  • Python字符串与时间相互转换

    Python字符串与时间相互转换1、字符串转日期/时间注意,字符串格式要与参数中时间格式要严格匹配,否则异常举例:①2019-05-0112:00:00对应%Y-%m-%d%H:%M:%S②2019-05-01对应%Y-%m-%d2、日期/时间转字符串3、打印系统当前时间代码如下:#coding:utf-8importdatetimeimpor…

    2022年5月20日
    40
  • ISO-8859-1乱码恢复

    ISO-8859-1乱码恢复

    2022年1月22日
    68
  • 使用GAppProxy时安全证书无效的解决办法「建议收藏」

    使用GAppProxy时安全证书无效的解决办法「建议收藏」使用GAppProxy做代理,登录Echofon时却老是弹出”api.twitter.com:443使用了无效的安全证书。该证书因为其发行这证书位置而不被信任sec_error_unknown_issuer”的对话框,导致登录失败。搜索了一下,可尝试手动将api地址加入信任列表。以FireFox4.0为例(3.6也差不多)具体做法如下:依次选择选项->高级->加…

    2025年6月20日
    1
  • 怎么保存退出 vim 编辑

    怎么保存退出 vim 编辑保存命令按ESC键跳到命令模式,然后::w保存文件但不退出vim:wfile将修改另外保存到file中,不退出vim:w!强制保存,不推出vim:wq保存文件并退出vim:wq!强制保存文件,并退出vimq:不保存文件,退出vim:q!不保存文件,强制退出vim:e!放弃所有修改,从上次保存文件开始再编辑本文来自ij2155的CSDN博客…

    2022年4月29日
    68

发表回复

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

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