如何区分两个相同类名,相同标题的窗口?

danxuezx 2018-08-30 02:22:07
如题,检测到系统中有两个或者多个窗口类名和标题都相同,可以通过什么方法区分这些窗口?
...全文
1394 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2018-09-04
  • 打赏
  • 举报
回复
引用 8 楼 danxuezx 的回复:
大家可以这么设想,创建一个默认的MFC对话框程序,啥都不改,编译生成一个exe。然后双击两次,打开两个窗口。如何在每次重新打开时区分他们?


你的区分原则是什么,你要要有区分的特征,特征区分有什么意义? 你晚上吃饭还区分吃的是哪几颗米粒不成?或者要区分哪些米粒是先下锅的?
danxuezx 2018-09-04
  • 打赏
  • 举报
回复
[quote=引用 13 楼 xianglitian 的回复:]
你的具体需求是什么,你问题中的需求我觉得实现不了[/quote
针对一些第三方程序窗口做一点小动作。需求主要是如何识别这些特定窗口。
danxuezx 2018-09-04
  • 打赏
  • 举报
回复
引用 11 楼 schlafenhamster 的回复:
"可以通过什么方法区分这些窗口"
区分窗口 hWnd
你的 问题 不是 区分 , 是 识别 即 找到 你要 的 窗口

到位,的确是要识别。
jacksonfan 2018-09-02
  • 打赏
  • 举报
回复
如果两个窗体对于父窗口的位置固定不变的话就先获取一个然后通过getnextwindow获取另一个
jacksonfan 2018-09-02
  • 打赏
  • 举报
回复
看看窗体内部子控件有没有不一样的
boylafong 2018-08-31
  • 打赏
  • 举报
回复
应该是你的需求有误 同一个exe执行两次,如果exe本身不对外发送数据或者产生联系的话,只能知道两个不同的handle,但这应该不是你要的,比如说起来100个你怎么办?
向立天 2018-08-31
  • 打赏
  • 举报
回复
你的具体需求是什么,你问题中的需求我觉得实现不了
schlafenhamster 2018-08-30
  • 打赏
  • 举报
回复
"可以通过什么方法区分这些窗口"
区分窗口 hWnd
你的 问题 不是 区分 , 是 识别 即 找到 你要 的 窗口
zwfgdlc 2018-08-30
  • 打赏
  • 举报
回复
引用 8 楼 danxuezx 的回复:
大家可以这么设想,创建一个默认的MFC对话框程序,啥都不改,编译生成一个exe。然后双击两次,打开两个窗口。如何在每次重新打开时区分他们?

那就不是单进程创建多个同样的窗口,
用GetWindowThreadProcessId()获取窗口所属进程ID来区分吧
Sandrer 2018-08-30
  • 打赏
  • 举报
回复
挂个全局消息钩子, 拦截窗口创建消息
当目标窗口创建时你把 HWND 和特定参数绑定起来
你后面查询的时候根据特定参数就能找到这个 HWND 了
danxuezx 2018-08-30
  • 打赏
  • 举报
回复
大家可以这么设想,创建一个默认的MFC对话框程序,啥都不改,编译生成一个exe。然后双击两次,打开两个窗口。如何在每次重新打开时区分他们?
danxuezx 2018-08-30
  • 打赏
  • 举报
回复
引用 6 楼 chengbar 的回复:
能和被检测窗口消息通信么?

第三方的窗口,不能和它通信。
sevancheng 2018-08-30
  • 打赏
  • 举报
回复
能和被检测窗口消息通信么?
danxuezx 2018-08-30
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
[quote=引用 2 楼 zgl7903 的回复:]
通过窗口句柄 HWND 区分

对呀,为什么不呢?[/quote]
HWND每次打开程序会不同吧?
danxuezx 2018-08-30
  • 打赏
  • 举报
回复
引用 1 楼 zwfgdlc 的回复:
同一进程吗?窗口大小是不是一样

同一个进程,大小一样的。
赵4老师 2018-08-30
  • 打赏
  • 举报
回复
引用 2 楼 zgl7903 的回复:
通过窗口句柄 HWND 区分

对呀,为什么不呢?
zgl7903 2018-08-30
  • 打赏
  • 举报
回复
通过窗口句柄 HWND 区分
zwfgdlc 2018-08-30
  • 打赏
  • 举报
回复
同一进程吗?窗口大小是不是一样
程序简介: 一键隐藏精灵是一个快速隐藏系统窗口的工具,使用它可以瞬间隐藏系统中的所有窗口,如QQ、网页、游戏窗口、桌面图标、任务栏等;可以选择不隐藏哪些窗口;可以隐藏的同时使系统静音。 程序提供两种隐藏方法:一种是键盘隐藏,默认热键为Ctrl+F12,可以根据自己的习惯进行设置;另一种是鼠标隐藏,有中键隐藏和左右键隐藏两种方式可选。 操作说明: 一.3种隐藏方式 隐藏前台窗口:只隐藏当前活动窗口,而不管其它任何窗口。 隐藏一切可视窗口:隐藏系统所有窗口,包括软件自身窗口在内。 隐藏自定义窗口:可以自己选择要隐藏哪些类型的窗口。 二.自定义规则 1.可以选择隐藏哪些窗口和不隐藏哪些窗口,单击自定义规则按钮,新建一个规则,选择标题或者类名,然后选择“排除”或“包含”,输入窗口标题或类名即可。排除指当选择“隐藏一切可视窗口”类型时,被排除在外不必隐藏的窗口;包含是指当选择“隐藏自定义窗口”类别时,将要隐藏的窗口,凡包含的都会被隐藏。 2.选择隐藏自定义窗口后,下面会有两个选项:浏览器和网页窗口与Windows资源管理器窗口,选中的话将同时隐藏它们。浏览器窗口只支持IE和360浏览器,要添加更多的话可以编辑自定义规则。 3.新建规则窗口有一个选项为“捕获前台窗口”,选择后会自动获取当前活动窗口的信息,也就是类名或标题。 4.可以使用记事本编辑HideRules.ini文件,Y表示包含,N表示排除,C代表类名,T代表标题,P代表程序,中间用减号分隔,最后一项是具体的窗口标题名或类名。比如“Y-C-Notepad”表示隐藏类名为Notepad的窗口,“N-T-你好”表示不隐藏标题为你好的窗口,类名和程序名不分大小写,标题必须区分。 5.规则支持通配符,*代表任意个字符,?代表1个字符。有些窗口的类名是会变的,比如暴风影音窗口,它类名后面几个字符是不固定的,但是前面的同,所以后面几位可以用一个*或几个?代替。 三.其它功能 有四个选项:隐藏桌面图标、隐藏任务栏、隐藏任务栏程序按钮和隐藏右下角托盘图标。选择后隐藏的同时也会连同这些特殊窗口一并隐藏。 四.设置 1.单击设置按钮会打开程序设置,开启键盘隐藏功能后,可以选择主控制热键;开启鼠标隐藏功能后,可以选择用鼠标键来隐藏。 2.其它 任务栏显示图标:指右下角的图标,默认是显示的。 随系统启动:可以在系统运行时跟着运行 隐藏时静音:隐藏同时暂停一切声音 使用声音效果:隐藏和显示窗口时的音效。 隐藏进程托盘图标:在隐藏窗口的同时隐藏同一进程的任务栏托盘按钮。 3.显示/隐藏软件主窗口的热键为:Ctrl+Shift+Alt+Esc;另外,主窗口在最小化后也会自动隐藏。 4.程序带有一个/m的参数,若以/m参数启动时将不显示主窗口,而是以后台方式运行。 五.需要注意: 1.隐藏前台窗口对本软件无效 2.在操作或设置本软件时最好不要使用热键 3.按两次热键为一个完整动作,有时可能没有符合条件的窗口,但是程序依然会执行,所以必须按两次返回以后才能继续隐藏其它窗口,这不属于软件bug。 4.程序退出后被隐藏的窗口将无法恢复,只能另找第三方窗口工具。 六.举例 1.隐藏全部系统窗口,但是不隐藏Word窗口:新建一个规则,选择“类名”和“排除”,在文本框中输入Word的类名OpusApp,确定即可,如果不知道类名,可以选中“类名”框和选中“捕获前台窗口”,再单击Word窗口使其处于前台,这样软件便会自动收到Word的类名。软件中默认已经添加了排除Office窗口一项,其它的请自行添加。除此之外,也可以根据窗口进程来排除Word窗口,在新建规则窗口选择“程序”选项,然后输入Word的程序名winword.exe并选排除即可。 2.只隐藏所有的记事本窗口:同样的新建一规则,选择类名和包含,类名中输入Notepad,确定即可。这里选择类名是因为记事本窗口的类名是不变的,而标题文字则有可能不同。由于窗口类名一般不变,所以隐藏或排除某类窗口尽量根据类名或者程序名来设置。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧