易语言吧

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 6203|回复: 2

[技术文章] 易语言大漠插件窗口句柄查找详解

[复制链接]

297

主题

537

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
14156

幽默大师终生成就

威望
0
易币
13534
贡献
0
积分
14156
UID
580
在线时间
451 小时
注册时间
2019-12-5
发表于 2020-3-5 22:13:35 | 显示全部楼层 |阅读模式
如果想要针对一个窗口进行操作,那么必定要知道这个窗口句柄如果按术语方式来解释:句柄是一个系统内部数据结构的引用
句柄表示:
窗口句柄:Hwnd
对象句柄: Handle
窗口特性:
1、随机性:每打开一次窗口就会产生一个随机的句柄
2、独立性:顶级窗口都是独立的
3、可继承:顶级窗口、子窗口、父窗口
4、名称:有标题名或类名,类名是肯定要有的
大漠插件查找窗口句柄例程
findwindow一般用来查找顶级窗口句柄.里面两个参数一个是标题.一个是类名.
截图202003052208383602..png
大漠.FindWindowEx (, , ) 查找子窗口句柄 .里面一个参数是父句柄.一个是类名.一个是标题

截图202003052210032403..png
3.FindWindowSuper 可以理解为超级查找窗口句柄
函数简介:
根据两组设定条件来查找指定窗口.
函数原型:

long FindWindowSuper(spec1,flag1,type1,spec2,flag2,type2)

参数定义:
spec1 字符串: 查找串1. (内容取决于flag1的值)
flag1整形数: 取值如下:
   0表示spec1的内容是标题
   1表示spec1的内容是程序名字. (比如notepad)
   2表示spec1的内容是类名
   3表示spec1的内容是程序路径.(不包含盘符,比如\windows\system32)
   4表示spec1的内容是父句柄.(十进制表达的串)
   5表示spec1的内容是父窗口标题
   6表示spec1的内容是父窗口类名
   7表示spec1的内容是顶级窗口句柄.(十进制表达的串)
   8表示spec1的内容是顶级窗口标题
   9表示spec1的内容是顶级窗口类名
type1 整形数: 取值如下
0精确判断
1模糊判断
spec2 字符串: 查找串2. (内容取决于flag2的值)
flag2 整形数: 取值如下:
   0表示spec2的内容是标题
   1表示spec2的内容是程序名字. (比如notepad)
   2表示spec2的内容是类名
   3表示spec2的内容是程序路径.(不包含盘符,比如\windows\system32)
   4表示spec2的内容是父句柄.(十进制表达的串)
   5表示spec2的内容是父窗口标题
   6表示spec2的内容是父窗口类名
   7表示spec2的内容是顶级窗口句柄.(十进制表达的串)
   8表示spec2的内容是顶级窗口标题
   9表示spec2的内容是顶级窗口类名
type2  整形数: 取值如下
0精确判断
1模糊判断
返回值:

整形数:函数简介:
根据指定的进程名字,来查找可见窗口.
函数原型:

long FindWindowByProcess(process_name,class,title)

参数定义:

process_name 字符串: 进程名. 比如(notepad.exe).这里是精确匹配,但不区分大小写.

class 字符串: 窗口类名,如果为空,则匹配所有. 这里的匹配是模糊匹配.
title 字符串: 窗口标题,如果为空,则匹配所有.这里的匹配是模糊匹配.
返回值:

整形数:
整形数表示的窗口句柄,没找到返回0
示例:
hwnd = dm.FindWindowByProcess("noteapd.exe","","记事本")
整形数表示的窗口句柄,没找到返回0
示例:
hwnd = dm.FindWindowSuper("记事本",0,1,"notepad",1,0)





4FindWindowByProcessID

函数简介:
根据指定的进程Id,来查找可见窗口.
函数原型:

long FindWindowByProcessId(process_id,class,title)

参数定义:

process_id 整形数: 进程id.

class 字符串: 窗口类名,如果为空,则匹配所有. 这里的匹配是模糊匹配.
title 字符串: 窗口标题,如果为空,则匹配所有.这里的匹配是模糊匹配.
返回值:

整形数:
整形数表示的窗口句柄,没找到返回0
函数简介:
根据指定的进程名字,来查找可见窗口.
函数原型:

long FindWindowByProcess(process_name,class,title)

参数定义:

process_name 字符串: 进程名. 比如(notepad.exe).这里是精确匹配,但不区分大小写.

class 字符串: 窗口类名,如果为空,则匹配所有. 这里的匹配是模糊匹配.
title 字符串: 窗口标题,如果为空,则匹配所有.这里的匹配是模糊匹配.
返回值:

整形数:
整形数表示的窗口句柄,没找到返回0
示例:
hwnd = dm.FindWindowByProcess("noteapd.exe","","记事本")

示例:
hwnd = dm.FindWindowByProcessId(123456,"","记事本")


FindWindowByProcess












0

主题

2368

帖子

9586

积分

VIP超级贵宾

Rank: 8Rank: 8

积分
9586
威望
198
易币
6819
贡献
0
积分
9586
UID
11903
在线时间
36 小时
注册时间
2021-1-23
发表于 2021-5-28 22:58:42 | 显示全部楼层
楼主发贴辛苦了,谢谢楼主分享!我觉得易语言吧是注册对了!
回复

使用道具 举报

2

主题

17

帖子

74

积分

易语言菜鸟

Rank: 2

积分
74
威望
0
易币
57
贡献
0
积分
74
UID
15860
在线时间
2 小时
注册时间
2021-6-17
发表于 2021-6-23 16:25:57 | 显示全部楼层
楼主发贴辛苦了,谢谢楼主分享!我觉得易语言吧是注册对了!
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【选择右侧内容,快速回复】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

大漠插件注册码无须等1-3号

QQ|一:站内所有资源均来自互联网收集或用户上传分享,本站不拥有此类资源的版权。 作为网络服务提供者,对转载行为的发生不具备充分的监控能力。但是当版权拥有者提出侵权并出示充分的版权证明材料时,易语言吧负有移除转载作品以及停止继续传播的义务。在满足前款条件下采取移除等相应措施后不为此向原发布人承担违约责任,包括不承担因侵权不成立而给原发布人带来损害的赔偿责任。 用户免费分享产生,如果侵犯了你的权益,联系QQ:3066137757|Archiver|手机版|小黑屋|易语言吧

GMT+8, 2024-5-17 09:51 , Processed in 0.240846 second(s), 30 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表