众所周知,IE窗口打开时是否最大化是由几个方面的因素造成的,比如最后一个IE窗口的最大化状态,或者注册表中的设置项。但有的时候,由于用户的IE窗口打开时并没有处于最大化状态,而程序设计人员又想使其处于最大化状态,一般大家都会想到一个办法,那就是Shell命令,因为该命令有一个参数值为vbMaximizedFocus,可以让被Shell命令运行的程序的窗口处于最大化状态,可惜的是,这个办法对IE窗口无效。
为此,我们可以借助一个名为ShowWindow的API函数。
如果是用VB新打开IE窗口,并使其最大化,那么可以用以下代码实现:
@H_404_7@Option Explicit Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long,ByVal nCmdShow As Long) As Long Private Const SW_SHOWMAXIMIZED = 3 Sub Main() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate2 "http://www.baidu.com" ShowWindow objIE.hwnd,SW_SHOWMAXIMIZED Set objIE = Nothing End Sub
如果是想让已打开的IE窗口最大化,那么可以用以下代码实现:
@H_404_7@Option Explicit Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long,ByVal nCmdShow As Long) As Long Private Const SW_SHOWMAXIMIZED = 3 Sub Main() Dim SHApp As Object,SHWin As Object Set SHApp = CreateObject("Shell.Application") For Each SHWin In SHApp.windows If LCase(Right(SHWin.FullName,12)) = "iexplore.exe" Then ShowWindow SHWin.hwnd,SW_SHOWMAXIMIZED End If Next Set SHApp = Nothing End Sub
为什么ShowWindow函数能实现,而VB中Shell函数却失败了,问题就出在IE本身有一个不可见的主容器窗口,当使用Shell并设置vbMaximizedFocus参数选项时,它是让被运行的程序的主窗口最大化,然后IE本身的那个主窗口是任何时候都不会显现出来的,因此失败了,而使用ShowWindow时,因为指定了具体的窗口句柄,且该窗口并不是IE的主容器窗口,所以能成功。
原文链接:/vb/262612.html