tisiem 发表于 2009-7-4 21:20:49

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

本帖最后由 tisiem 于 2009-7-5 11:47 编辑

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

有一些打开着的窗口,并非是AU3打开的,标题也是未知的。
用 $oWin=WinGetTitle("") 得到了当前激活窗口的完整标题,想进一步判断这个窗口是不是一个浏览器窗口(IE的,或者是世界之窗的,都算是浏览器窗口),应该怎么做?

kn007 发表于 2009-7-4 21:22:43

楼主最近总在研究浏览器啊,呵呵~
总觉得你的问题有点不可能解决。。。
当然,这有很大的可能是我的技术太差了。。。

lynfr8 发表于 2009-7-5 00:10:51

原理:
1.winlist获取所有可见窗口的标题,WinGetProcess获取标题对应的pid
2.ProcessExists返回浏览器进程对应的pid,和1.对比,即可;判断窗口是不是浏览器窗口 by lynfr8
$var = WinList();列出所有窗口
For $i = 1 to $var
If $var[$i] <> "" AND IsVisible($var[$i]) Then;读取窗口标题数组
      $pid = WinGetProcess($var[$i]);获取标题对应的进程pid
      If $pid =ProcessExists("IEXPLORE.exe") Then MsgBox(0,$var[$i] ,"IE浏览器窗口");对比
      If $pid =ProcessExists("Maxthon.exe") Then MsgBox(0,$var[$i] ,"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

tisiem 发表于 2009-7-5 11:46:53

二楼,是啊,我是想做个管理论坛的小工具,呵,你看高手都来啦,没有做不到,只有想不到啊。
三楼谢谢,原理讲解对我非常重要!知其然知其所以然,非常感谢!
四楼,你是神!你是超级版主名不虚传!!爽透了,就喜欢你给的这种简洁实用的代码,拜一下!
页: [1]
查看完整版本: 如何判断一个窗口是不是浏览器窗口?