找回密码
 加入
搜索
查看: 1292|回复: 4

如何判断一个窗口是不是浏览器窗口?

[复制链接]
发表于 2009-7-4 21:20:49 | 显示全部楼层 |阅读模式
本帖最后由 tisiem 于 2009-7-5 11:47 编辑

为了手头的事,已经连续地提了好几个问题了。
我现在的情况是这样的:

有一些打开着的窗口,并非是AU3打开的,标题也是未知的。
用 $oWin=WinGetTitle("") 得到了当前激活窗口的完整标题,想进一步判断这个窗口是不是一个浏览器窗口(IE的,或者是世界之窗的,都算是浏览器窗口),应该怎么做?
发表于 2009-7-4 21:22:43 | 显示全部楼层
楼主最近总在研究浏览器啊,呵呵~
总觉得你的问题有点不可能解决。。。
当然,这有很大的可能是我的技术太差了。。。
发表于 2009-7-5 00:10:51 | 显示全部楼层
原理:
1.winlist获取所有可见窗口的标题,WinGetProcess获取标题对应的pid
2.ProcessExists返回浏览器进程对应的pid,和1.对比,即可
;判断窗口是不是浏览器窗口 by lynfr8
$var = WinList();列出所有窗口
For $i = 1 to $var[0][0]
  If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then;读取窗口标题数组
        $pid = WinGetProcess($var[$i][0]);获取标题对应的进程pid
        If $pid =  ProcessExists("IEXPLORE.exe") Then MsgBox(0,$var[$i][0] ,"IE浏览器窗口");对比
        If $pid =  ProcessExists("Maxthon.exe") Then MsgBox(0,$var[$i][0] ,"Maxthon浏览器窗口");对比
    EndIf  
Next

Func IsVisible($handle); 只显示带有标题的可见窗口
  If BitAnd( WinGetState($handle), 2 ) Then 
    Return 1
  Else
    Return 0
  EndIf

EndFunc
发表于 2009-7-5 04:39:47 | 显示全部楼层
#include<process.au3>
$win = WinGetTitle("")
$pid = WinGetProcess($win)
$pro = _ProcessGetName($pid)
If $pro = "iexplorer.exe" Or $pro = "theworld.exe" Or $pro = "Maxthon.exe" Then
        MsgBox(0,"","是浏览器窗口")
EndIf
 楼主| 发表于 2009-7-5 11:46:53 | 显示全部楼层
二楼,是啊,我是想做个管理论坛的小工具,呵,你看高手都来啦,没有做不到,只有想不到啊。
三楼谢谢,原理讲解对我非常重要!知其然知其所以然,非常感谢!
四楼,你是神!你是超级版主名不虚传!!爽透了,就喜欢你给的这种简洁实用的代码,拜一下!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-28 08:18 , Processed in 0.071464 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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