cashiba 发表于 2016-11-13 00:08:08

如何枚举所有类似标题的窗口的句柄[已解决]

本帖最后由 cashiba 于 2016-11-14 13:20 编辑

我叫mt_淘宝搜索 - Microsoft Internet Explorer
我叫mt_网页搜索 - Microsoft Internet Explorer
狗狗搜索-我叫mt - Microsoft Internet Explorer
我叫mt - 必应 Bing - Microsoft Internet Explorer
我叫mt - Google 搜索 - Microsoft Internet Explorer
我叫mt?-?搜狗搜索 - Microsoft Internet Explorer
我叫mt - 有道搜索 - Microsoft Internet Explorer
我叫mt - 搜搜更懂你 - Microsoft Internet Explorer
百度搜索_我叫mt - Microsoft Internet Explorer
我叫mt 第四季_淘宝搜索 - Microsoft Internet Explorer
我叫mt 第四季_网页搜索 - Microsoft Internet Explorer
狗狗搜索-我叫mt 第四季 - Microsoft Internet Explorer
我叫mt 第四季 - 必应 Bing - Microsoft Internet Explorer
我叫mt 第四季 - Google 搜索 - Microsoft Internet Explorer
我叫mt 第四季?-?搜狗搜索 - Microsoft Internet Explorer
我叫mt 第四季 - 有道搜索 - Microsoft Internet Explorer
我叫mt 第四季 - 搜搜更懂你 - Microsoft Internet Explorer
百度搜索_我叫mt 第四季 - Microsoft Internet Explorer如上所示,假如打开了若干个网页窗口,不确定有多少个窗口,也不确定各窗口完整的标题是什么,只知道都含"Microsoft Internet Explorer"这个字符串。另外还有其它若干非浏览器窗口。
如何枚举出所有含"Microsoft Internet Explorer"这个关键词的窗口的句柄呢?
感觉是个简单问题,但是这两天被正则弄眯瞪了....有点卡壳
{:face (245):}

nmgwddj 发表于 2016-11-13 01:59:56

WinList ( ["窗口标题" [, "窗口文本"]] )若没有指定窗口标题及窗口文本则返回所有顶层窗口.

本函数返回的数组是一个二维数组,包含下列信息:
$array = 窗口数
$array = 第1个窗口的标题
$array = 第1个窗口的句柄(HWND)
$array = 第2个窗口的标题
$array = 第2个窗口的句柄(HWND)
...
$array = 第n个窗口的标题
$array = 第n个窗口的句柄(HWND)

Huiseyu 发表于 2016-11-13 04:07:53

本帖最后由 Huiseyu 于 2016-11-13 04:12 编辑

刚好我这有一个现成的,但是写的太乱,可读性很差.
都是基于下面的函数实现$Get_WINALL = _WinAPI_EnumWindows() ;枚举

Huiseyu 发表于 2016-11-13 05:09:59

楼主试试是不是这个$winlist = winlist()

global $Str_WinTitle="Internet Explorer"

for $i = 1 to ubound($winlist) - 1

$title = $winlist[$i]

if stringinstr($title ,$Str_WinTitle) then

$text = '在标题'&$title &'中包含了' &$Str_WinTitle& @tab & '字符,它的句柄:'& $winlist[$i]

consolewrite($text&@crlf)

endif

next

cashiba 发表于 2016-11-14 12:25:55

WinList ( ["窗口标题" [, "窗口文本"]] )
nmgwddj 发表于 2016-11-13 01:59 http://www.autoitx.com/images/common/back.gif
就是在想,用这个winlist+正则来达到目的呢
只是对AU3的正则不熟悉,不知道怎么弄出来......

cashiba 发表于 2016-11-14 12:28:36

楼主试试是不是这个
Huiseyu 发表于 2016-11-13 05:09 http://www.autoitx.com/images/common/back.gif
嗯,用这个_WinAPI_EnumWindows也是一个办法,只是感觉有点复杂,跟自己再写一个函数差不多
{:face (396):}

cashiba 发表于 2016-11-14 12:39:17

终于知道咋弄了......
{:face (288):}local $lrr=WinList("")
_ArrayDisplay($lrr,"lrr")
页: [1]
查看完整版本: 如何枚举所有类似标题的窗口的句柄[已解决]