检查打开了几个IE页面

1、对于IE6,通过枚举所有的IEFrame即可

2、对于IE6以上的版本,通过枚举所有的TabWindowClass或者Frame Tab即可。


图为spy++抓取的IE8.每开一个IE tab页,即会有一个Frame Tab,一个Frame Tab也对应一个TabWindowClass。

#coding:gbk
import win32gui,win32api,os
def getIEMainVersion(file_name='C:\Program Files\Internet Explorer\iexplore.exe'):  
    info = win32api.GetFileVersionInfo(file_name, os.sep)  
    ms = info['FileVersionMS']  
    ls = info['FileVersionLS']  
    #version = '%d.%d.%d.%04d' % (win32api.HIWORD(ms), win32api.LOWORD(ms), win32api.HIWORD(ls), win32api.LOWORD(ls))  
    #return version 
    return win32api.HIWORD(ms)
    
    
def myCallBack(hwnd,extra):
    classname=win32gui.GetClassName(hwnd)
    if classname == 'IEFrame':
        ieFrameList.append(hwnd)
def myChildCallback(hwnd,extra):
    classname=win32gui.GetClassName(hwnd)
    if classname == 'TabWindowClass': 
        ieFrameTabList.append(hwnd)
def getIEFrameList():
    '''
    返回所有类为“IEFrame”的所有handle的list,即IE窗口list
    '''
    global ieFrameList
    ieFrameList = []
    win32gui.EnumWindows(myCallBack,0)
    return ieFrameList
def getIEFrameTabList():
    '''
    返回类为“TabWindowClass”的所有handle的list,即IE Tab的list
    '''
    global ieFrameTabList
    ieFrameTabList=[]
    for ieframe in getIEFrameList():
        print 'ieframe',ieframe
        win32gui.EnumChildWindows(ieframe,myChildCallback,0)
    return ieFrameTabList
def check_process_exsit_by_number(num):
    if getIEMainVersion()=='6':
        print 'IE6,need num %d,exist:%d'%(num,len(getIEFrameList()))
        if num <= len(getIEFrameList()):
            return True
    else:
        print '非IE6,need:  %d,exist :%d'%(num,len(getIEFrameList()))
        if num <= len(getIEFrameTabList()):
            return True
    return False     
if __name__ == '__main__':
    print check_process_exsit_by_number(3)    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值