十万个为什么 发表于 2020-3-5 22:13:35

易语言大漠插件窗口句柄查找详解

如果想要针对一个窗口进行操作,那么必定要知道这个窗口句柄如果按术语方式来解释:句柄是一个系统内部数据结构的引用
句柄表示:
窗口句柄:Hwnd
对象句柄: Handle
窗口特性:
1、随机性:每打开一次窗口就会产生一个随机的句柄
2、独立性:顶级窗口都是独立的
3、可继承:顶级窗口、子窗口、父窗口
4、名称:有标题名或类名,类名是肯定要有的
大漠插件查找窗口句柄例程
findwindow一般用来查找顶级窗口句柄.里面两个参数一个是标题.一个是类名.

大漠.FindWindowEx (, , ) 查找子窗口句柄 .里面一个参数是父句柄.一个是类名.一个是标题


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












yyz860723 发表于 2021-5-28 22:58:42

楼主发贴辛苦了,谢谢楼主分享!我觉得易语言吧是注册对了!

qq613121 发表于 2021-6-23 16:25:57

楼主发贴辛苦了,谢谢楼主分享!我觉得易语言吧是注册对了!
页: [1]
查看完整版本: 易语言大漠插件窗口句柄查找详解