找回密码
 加入
搜索
查看: 13651|回复: 20

[AU3基础] AU3浏览器- 如何不弹出IE窗口-简单试例

 火.. [复制链接]
发表于 2010-7-2 23:06:53 | 显示全部楼层 |阅读模式
一个不再弹出IE窗口的AU3浏览器
代码分两部份编译:
一,监控IE的脚本,编译好之后命名OIE.EXE
#NoTrayIcon
#include <GUIConstants.au3> 

While 1                                                
        sleep (1)                                 ;避免CPU占用率过高
        if ProcessExists("iexplore.exe") Then    ;在循环中监控IE进程,发现时
        sleep (500)                             ;设定一个延时,否则AU3有可能无法打开浏览器
        ProcessClose ("iexplore.exe")          ;终止系统 IE         
    EndIf
WEnd
二,AU3-浏览器
将之前先编译好的OIE.EXE文件,与本文件放置同一目录下。
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>

Local $i = 0 ,$t = 0, $n = 0
Opt("GUIOnEventMode", 1)
$Form0 = GUICreate("简单的AU3浏览器-初级试验品-功能还很不完善", 1024, 728, 0, 0)      ;主窗体
FileInstall("OIE.exe", @TempDir & "")               ;将同目录下的IE监控程序设置存取,编译前请先编译监控文件OIE.exe,放置同目录下。
$Button1 = GUICtrlCreateButton("百度网址大全", 5, 30, 150, 30)
$Button81 = GUICtrlCreateButton("退出", 720, 0, 150, 30)
$Button80 = GUICtrlCreateButton("帮助", 720, 30, 150, 30)
GUICtrlSetOnEvent($Button1, "Activate1")                             ; 设置按钮控件单击事件
GUICtrlSetOnEvent($Button81, "Activate81")                         ; 设置按钮控件单击事件
GUISetState(@SW_SHOW)

$Form1 = GUICreate("首页", 1024, 650,8, 80,BitOR($WS_POPUP,$WS_CLIPSIBLINGS),BitOR($WS_EX_TOOLWINDOW,$WS_EX_TOPMOST )) ;首页窗体
$WebBrowser1=ObjCreate("Shell.Explorer.2")
GUICtrlCreateObj($WebBrowser1, -12, 0, 1024, 750)                    ;对$WebBrowser1对象设置大小
$EventObject=ObjEvent($WebBrowser1,"IEEvent_","DWebBrowserEvents")  ;设置通过UDF接收windows事件
$URL = "http://site.baidu.com"                                     ;自定义首页
$WebBrowser1.Navigate($URL)
GUISetState(@SW_SHOW)
RunWait (@TempDir & "\OIE.exe","",@SW_HIDE)                      ;运行IE监控

While 1                                                
                Sleep (1)
WEnd

;=====================================
Func IEEvent_NewWindow($URL)                               ; 接收IE的NewWindow事件。注意NewWindow2无效。有新窗口时发生,较早
;ProcessClose ("iexplore.exe")
GUISwitch ($Form1)                                       ;切换到此窗体下
$Form2 = GUICreate($URL, 1024, 650,8, 80,BitOR($WS_POPUP,$WS_CLIPSIBLINGS),BitOR($WS_EX_TOOLWINDOW,$WS_EX_TOPMOST )) ;作为装载IE新页面的窗体  
$WebBrowser2=ObjCreate("Shell.Explorer.2")
GUICtrlCreateObj($WebBrowser2, -12, 0, 1024, 750)   
$EventObject=ObjEvent($WebBrowser2,"IEEvent_","DWebBrowserEvents") 
$WebBrowser2.Navigate($URL) 
GUISetState(@SW_SHOW)

$n = $n + 1
If $n >= 4 Then
         WinKill ( $URL, "")
         Msgbox(0,"","对不起!本浏览器暂时只支持同时打开3个页面,5秒后将自动退出",5)
         ProcessClose ("OIE.exe") 
         Activate81()  ;警告后直接退出AU3
EndIf
EndFunc

;----------------------------------------
Func IEEvent_TitleChange($URL)                         ; 接收IE的TitleChange事件。获取网页标题。在可以获取title时发生,较晚。
$i = $i + 1
IniWrite(@TempDir & "\title.ini", "title"&$i,"", $URL)   ; 将所获得的URL标题写入配置ini文件
EndFunc

;----------------------------------------
Func IEEvent_NavigateComplete($URL)                ; 接收IE的TNavigateComplete事件。获取网页网址。比TitleChange事件稍早
$t = $t + 1 
IniWrite(@TempDir & "\ini.ini", "title"&$t,"", $URL) ;将所获得的URL网址写入INI文件
EndFunc     ;==>IEEvent_NavigateComplete        ;目的通过按钮(标签)点击激活指定窗口,显示指定页

;----------------------------------------
Func IEEvent_StatusTextChange ()              ; 接收IE的IEEvent_StatusTextChange事件。触发自定义的wwwTab()事件 。更晚。
wwwTab()                                     ; 此事件中按钮需要从title.ini文件中获取显示文本,因此只能发生在title.ini写入之后
EndFunc

;====================================================================================
Func wwwTab()
        GUISwitch ($Form0)        
        $var2 = IniRead(@TempDir & "\title.ini", "title4", "", "")
        $var3 = IniRead(@TempDir & "\title.ini", "title6", "", "")
        $var4 = IniRead(@TempDir & "\title.ini", "title8", "", "")
        $var5 = IniRead(@TempDir & "\title.ini", "title10", "", "")
        
$Button2 = GUICtrlCreateButton($var2, 155, 30, 150, 30)
$Button3 = GUICtrlCreateButton($var3, 305, 30, 150, 30)
$Button4 = GUICtrlCreateButton($var4, 455, 30, 150, 30)
$Button5 = GUICtrlCreateButton($var5, 606, 30, 150, 30)

GUICtrlSetOnEvent($Button2, "Activate2") 
GUICtrlSetOnEvent($Button3, "Activate3") 
GUICtrlSetOnEvent($Button4, "Activate4") 
GUICtrlSetOnEvent($Button5, "Activate5") 

If $var2 = False Then
        GUICtrlSetState ( $Button2, $GUI_HIDE)  ; 窗体隐藏  $GUI_HIDE
Else                                        ; 否则
        GUICtrlSetState ( $Button2, $GUI_SHOW)  ; 窗体显示  $GUI_SHOW
EndIf
If $var3 = False Then
        GUICtrlSetState ( $Button3, $GUI_HIDE)
Else
        GUICtrlSetState ( $Button3, $GUI_SHOW)
EndIf
If $var4 = False Then
        GUICtrlSetState ( $Button4, $GUI_HIDE)
Else
        GUICtrlSetState ( $Button4, $GUI_SHOW)
EndIf
If $var5 = False Then
        GUICtrlSetState ( $Button5, $GUI_HIDE)
Else
        GUICtrlSetState ( $Button5, $GUI_SHOW)
EndIf

EndFunc   ;==>wwwTab()  自定义的窗体按钮标签事件

;=================================================================
Func Activate91()
        $var = IniRead(@TempDir & "\ini.ini", "title1", "", "")
        WinActivate ( $var, "" )
EndFunc   ;==>Activate9

Func Activate2()
        $var = IniRead(@TempDir & "\ini.ini", "title2", "", "")
        WinActivate ( $var, "" )
EndFunc   ;==>Activate2

Func Activate3()
        $var = IniRead(@TempDir & "\ini.ini", "title3", "", "")
        WinActivate ( $var, "" )
EndFunc   ;==>Activate3

Func Activate4()
        $var = IniRead(@TempDir & "\ini.ini", "title4", "", "")
        WinActivate ( $var, "" )
EndFunc   ;==>Activate4

Func Activate5()
        $var = IniRead(@TempDir & "\ini.ini", "title5", "", "")
        WinActivate ( $var, "" )
EndFunc   ;==>Activate5

Func Activate1()
        WinActivate ("首页", "" )
EndFunc   ;==>Activate1

Func Activate80()
         GUISwitch ($Form0) 
     $Form80 = GUICreate("帮助", 400, 300, 250, 214,$WS_CAPTION,$WS_EX_TOPMOST)
     $Labe80 = GUICtrlCreateLabel("报歉!东西很烂,功能有待各位开发!", 78,80, 333, 153)
     GUICtrlSetFont(-1, 18, 400, 0, "MS Sans Serif")
     GUICtrlSetColor(-1, 0xFF0000)
         $Button88 = GUICtrlCreateButton("关闭", 88, 180, 150, 30)
         GUICtrlSetOnEvent($Button88, "Activate88")
     GUISetState(@SW_SHOW)
     Sleep (2000)
         WinKill ( "帮助", "" )
EndFunc   ;==>Activate80

Func Activate88()
        WinKill ( "帮助", "" )
EndFunc   ;==>Activate81

Func Activate81()
        qinkong1()
        qinkong2()
        ProcessClose ("OIE.exe")   
        Exit
EndFunc   ;==>Activate81

Func qinkong1()
        FileDelete(@TempDir & "\ini.ini")   ;直接删除
EndFunc   ;==>qinkong1()

Func qinkong2()
    FileDelete(@TempDir & "\title.ini") 
        
EndFunc   ;==>qinkong2()

; end

评分

参与人数 1金钱 +22 贡献 +5 收起 理由
lynfr8 + 22 + 5 很棒的见解

查看全部评分

发表于 2010-7-3 02:16:02 | 显示全部楼层
+>02:19:01 开始执行 ACNWrapper v.1.0.0.8
+> ============================================
+>执行环境:
+>        CPU构架:        X64
+>        系统构架:        X86
+>        系统语言:        0804
+>        键盘布局:        00000804
+>        IP地址:                192.168.1.101
+>        内存总量:        2047MB
+>        内存剩余:        993MB
+>        操作系统:        WIN_XP/Service Pack 3
+>        AU3版本:        3.3.5.6
+> ============================================
>运行 AU3Check (1.54.19.0)  开始目录:C:\autoit3
+>02:19:01 AU3Check 完成[CODE]:0
>运行:(3.3.5.6):C:\autoit3\autoit3.exe "C:\Documents and Settings\Lyn\桌面\AU3-浏览器.au3"    
C:\Documents and Settings\??\AU3-???.au3 (21) : ==> ???????????("Object").:
$WebBrowser1.Navigate($URL)
$WebBrowser1^ ERROR
->02:19:01 AutoIT3.exe 完成:[CODE]:1
 楼主| 发表于 2010-7-3 16:03:55 | 显示全部楼层
谢谢元老。
测试编译没问题啊,21行前后也没错误提示啊。
发表于 2010-7-3 16:54:35 | 显示全部楼层
可资借鉴哦哦哦哦哦

评分

参与人数 1贡献 -1 收起 理由
lynfr8 -1

查看全部评分

发表于 2010-7-6 15:46:18 | 显示全部楼层
本帖最后由 lynfr8 于 2010-7-6 16:02 编辑
谢谢元老。
测试编译没问题啊,21行前后也没错误提示啊。
dnbj2010 发表于 2010-7-3 16:03



    再次测试过,代码没问题,自己修改的时候误改了部分字符导致脚本错误。
 楼主| 发表于 2010-7-8 18:50:33 | 显示全部楼层
回复 5# lynfr8
正在做一些修改,发出的那个代码是没问题,但不好测试。我把$Form2设为$Form0的子窗口了,这样省去强行置顶的难看。但卡住了。因为把$Form2设为$Form0的子窗口后,没办法激活了(也就是没办法通过点击按扭来切换子窗口)。换几种方法都不行。当然这个跟IE跳出没多大关系。刚好又去看了元老发的新贴,有很多新东西,正在消化。
发表于 2010-7-8 19:01:10 | 显示全部楼层
回复  lynfr8
正在做一些修改,发出的那个代码是没问题,但不好测试。我把$Form2设为$Form0的子窗口了,这 ...
dnbj2010 发表于 2010-7-8 18:50



    解决完新窗口跳出的问题之后就要解决多标签显示不同网页之间切换的问题了
  希望楼主能走在前面开路,其他坛友也会跟上来,让AU3浏览器得到进一步的完善
发表于 2010-7-16 12:00:04 | 显示全部楼层
持续关注,遇到问题:游戏网页多开,实现多标签多开,同一站点多用户多标签不冲突!
发表于 2010-7-16 13:24:31 | 显示全部楼层
如果默认浏览器不是IE的话岂不是弹窗还要出来?
发表于 2010-7-18 10:24:40 | 显示全部楼层
学习了,这么好的东西!
 楼主| 发表于 2010-7-18 14:48:59 | 显示全部楼层
回复 9# guland

呵呵,是啊,上面那个例子是从监控iexplore.exe进程来入手的,如果系统默认的是其他浏览器,那这个监控就失效了。
下面这个稍好一点。
#include <ButtonConstants.au3>
#include "GUIConstantsEx.au3"
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include <IE.au3>
#include <Misc.au3>

Opt("GUIOnEventMode", 1)
Local $r = 1,$i = 0 ,$t = 0, $n = 0,$b = 0,$Text,$Text2="",$URL = "http://site.baidu.com"
Local $Form80,$Form[5],$Form2,$Button2,$Button3,$Button4,$Button5
$dll = DllOpen("user32.dll")   
$WebBrowser2=ObjCreate("Shell.Explorer.2")

$Form0 = GUICreate("AU3简单多标签浏览器", 623, 449, 192, 114,$WS_OVERLAPPEDWINDOW)   ;主窗体
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")             ;GUIOnEventMode 模式下添加窗口关闭
$Graphic1 = GUICtrlCreateGraphic(0, 0, @DesktopWidth, 0)   ;(左 顶 宽 高) 添加绘图控件
GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 0, 30)                ; 移位 绘图控件坐标0原点,移动起点到新坐标,下移30
GUICtrlSetGraphic(-1, $GUI_GR_LINE, @DesktopWidth, 30)   ; 横线 从新起点画一横线
;GUICtrlSetGraphic(-1, $GUI_GR_PENSIZE, 5)              ; 定义此点画线粗细

$Button1 = GUICtrlCreateButton("首页", 0, 36, 110, 25)    
GUICtrlSetResizing (-1, $GUI_DOCKALL)

$Button75 = GUICtrlCreateButton("停止", 0, 0, 40, 30)         ;定义主窗口基本功能按钮
GUICtrlSetResizing (-1, $GUI_DOCKALL)                         ;锁定控件位置
$Button76 = GUICtrlCreateButton("前进", 45, 0, 40, 30)
GUICtrlSetResizing (-1, $GUI_DOCKALL)
$Button77 = GUICtrlCreateButton("后退", 90, 0, 40, 30)
GUICtrlSetResizing (-1, $GUI_DOCKALL)
$Button78 = GUICtrlCreateButton("刷新", 135, 0, 40, 30)
GUICtrlSetResizing (-1, $GUI_DOCKALL)
$Button79 = GUICtrlCreateButton("主页", 180, 0, 40, 30)
GUICtrlSetResizing (-1, $GUI_DOCKALL)
$Button81 = GUICtrlCreateButton("退出", 225, 0, 40, 30)
GUICtrlSetResizing (-1, $GUI_DOCKALL)
$Button80 = GUICtrlCreateButton("帮助", 270, 0, 40, 30)
GUICtrlSetResizing (-1, $GUI_DOCKALL)
$Button82 = GUICtrlCreateButton("确定", 800, 5, 40, 20)      
GUICtrlSetResizing (-1, $GUI_DOCKALL)

$address_bar_label = GUICtrlCreateLabel("地址: ", 335, 8, 40, 20)  
GUICtrlSetResizing (-1, $GUI_DOCKALL)

Global $ini = "autoit.ini"
$iniread = IniRead($ini, "URL", "LAST URL", " ")
Global $read_homepage = IniRead($ini, "Settings", "Homepage", "")
Global $read_starthomepage = IniRead($ini, "Settings", "StartHomepage", "")
If $read_starthomepage = "0" Then $read_homepage = $iniread

$address_bar_input = GUICtrlCreateInput($read_homepage, 390, 5, 400, -1)        ;设置输入框(Input)控件,作为网址输入及显示
GUICtrlSetResizing (-1, $GUI_DOCKALL)

GUICtrlSetOnEvent($Button1, "Activate1")                            
GUICtrlSetOnEvent($Button75, "Activate75")
GUICtrlSetOnEvent($Button76, "Activate76")
GUICtrlSetOnEvent($Button77, "Activate77")
GUICtrlSetOnEvent($Button78, "Activate78")
GUICtrlSetOnEvent($Button79, "Activate79")
GUICtrlSetOnEvent($Button80, "Activate80")
GUICtrlSetOnEvent($Button81, "Activate81")                   ; 设置按钮控件单击事件 
GUICtrlSetOnEvent($Button82, "address_bar_input") 

$status_bar = GUICtrlCreateLabel("载入: " & $read_homepage & "...", 0, 584, "", "", BitOR(11, 0x1000))
GUISetState(@SW_SHOW)
;------------------------------------------------
$Form1 = GUICreate("首窗", 1024, 650, 0, 60,$WS_POPUP)                       ;设置初载的首页窗体Form1
DllCall("user32.dll","hwnd","SetParent","hwnd",$Form1,"hwnd",$Form0)       ;设置Form1yl为Form0的子窗口.
;_WinAPI_SetParent与DllCall-"SetParent"等效。对比学习两者的关系。
;_WinAPI_SetParent($Form1,$Form0)

$WebBrowser1=ObjCreate("Shell.Explorer.2")                                 ;等效 _IECreateEmbedded()
GUICtrlCreateObj($WebBrowser1,0, 0, 1024, 750)                            ;设置WebBrowser1对象大小
$EventObject=ObjEvent($WebBrowser1,"IEEvent_","DWebBrowserEvents")       ;设置接收windows事件
if @error then exit Msgbox(0,"错误!","不可使用COM接口 'DWebBrowserEvents'. 错误代码: " & hex(@error,8))
$Timer = DllCallbackRegister("Timer", "int", "hwnd;uint;uint;dword")    ;设置Timer控件
$TimerDLL = DllCall($dll, "uint", "SetTimer", "hwnd", 0, "uint", 0, "int", 10, "ptr", DllCallbackGetPtr($Timer))
;函数SetTimer,用WM_TIMER来设置定时器。每隔10毫秒自动执行一次DllCallbackRegister,创建自定义回调函数Timer
;参看后面的Timer()事件

$WebBrowser1.Navigate( $URL)             ;自定义首页
GUISetState(@SW_SHOW)
GUISwitch ($Form0)                     ;切换当前窗口到主窗口
;-------------------------------------------------------------
While 1
                Sleep (1)
                $cursor = _WinAPI_GetCursorInfo()                            ;获取鼠标状态
           If $cursor[2]=65581 And _IsPressed("1", $dll) Then
                                WinSetOnTop($Form1,"",1)
                 MsgBox(0,"IE内嵌不新建IE窗口", "0",1,WinGetHandle("Program Manager"))
                        WinSetOnTop($Form1,"",0)
                If $Text2<>"" Then 
                WebBrowser1_Navigate()                            ;自定义打开新页事件
                EndIf                                
                   EndIf
                $msg = GUIGetMsg()
Wend

;-------------------------------------------------------------
Func WebBrowser1_Navigate()
            GUISwitch($Form0)  
                $r = $r + 1
            $Form[$r] = GUICreate($Text2, 1024, 650, 0, 60,$WS_POPUP)  ;设置$Form[$r]作为装载IE新页面的窗体 
                _WinAPI_SetParent($Form[$r],$Form0)                       ;设置Form[$r]为Form0的子窗口.
                
                $WebBrowser2=ObjCreate("Shell.Explorer.2")
        GUICtrlCreateObj($WebBrowser2, -12, 0, 1024, 750)   
                $EventObject=ObjEvent($WebBrowser2,"IEEvent_","DWebBrowserEvents") 
                if @error then exit Msgbox(0,"错误!","不可使用COM接口 'DWebBrowserEvents'. 错误代码: " & hex(@error,8))
        $Timer = DllCallbackRegister("Timer", "int", "hwnd;uint;uint;dword")
        $TimerDLL = DllCall($dll, "uint", "SetTimer", "hwnd", 0, "uint", 0, "int", 10, "ptr", DllCallbackGetPtr($Timer))
                
        $WebBrowser2.Navigate( $Text2 )
                GUISetState(@SW_SHOW)
EndFunc
;--------------------------------------------
Func IEEvent_TitleChange($URL)                 ; 接收IE的TitleChange事件。获取网页标题。在可以获取title时发生,较晚。
$WR = IniRead ("web.ini","Button","Refresh","1")
$WF = IniRead ("web.ini","Button","Forward","1")
$WG = IniRead ("web.ini","Button","GoBack","1")
If $WR =1  And StringCompare ($URL,$WebBrowser2.LocationName) <> 0 And StringInStr($URL, "_") ="_" And StringLeft($URL,4)<>"http" Then         
; 将$URL标题中不合条件的标题剔除
$i = $i + 1
IniWrite("title.ini", "www","title"&$i, $URL)   ; 将所获得的URL标题写入配置ini文件
EndIf
wwwTab()
IniDelete ("web.ini","Button", "Refresh")
IniDelete ("web.ini","Button", "Forward")
IniDelete ("web.ini","Button", "GoBack")
EndFunc

;----------------------------------------
Func IEEvent_StatusTextChange ($Text)     ; 接收IE的IEEvent_StatusTextChange事件。
If $Text<>'' And StringLeft($Text,4)="http" Then $Text2=$Text

EndFunc

;====================================================================================
Func wwwTab()
        GUISwitch ($Form0)        
        $var2 = IniRead("title.ini", "www", "title2", "no")
        $var3 = IniRead("title.ini", "www", "title3", "no")
        $var4 = IniRead("title.ini", "www", "title4", "no")
        $var5 = IniRead("title.ini", "www", "title5", "no")

$Button2 = GUICtrlCreateButton($var2, 110, 36, 110, 25)
GUICtrlSetResizing (-1, $GUI_DOCKALL)
$contextmenu2 = GUICtrlCreateContextMenu ($Button2)         ; 创建右键菜单
$FormCLOSE2 = GUICtrlCreateMenuitem ("关闭",$contextmenu2) ; 关闭此窗口
GUICtrlSetOnEvent($FormCLOSE2, "FormCLOSE2")


$Button3 = GUICtrlCreateButton($var3, 220, 36, 110, 25)
GUICtrlSetResizing (-1, $GUI_DOCKALL)
$contextmenu3 = GUICtrlCreateContextMenu ($Button3)         ; 创建右键菜单
$FormCLOSE3 = GUICtrlCreateMenuitem ("关闭",$contextmenu3) ; 关闭此窗口
GUICtrlSetOnEvent($FormCLOSE3, "FormCLOSE3")

$Button4 = GUICtrlCreateButton($var4, 330, 36, 110, 25)
GUICtrlSetResizing (-1, $GUI_DOCKALL)
$contextmenu4 = GUICtrlCreateContextMenu ($Button4)         ; 创建右键菜单
$FormCLOSE4 = GUICtrlCreateMenuitem ("关闭",$contextmenu4) ; 关闭此窗口
GUICtrlSetOnEvent($FormCLOSE4, "FormCLOSE4")

$Button5 = GUICtrlCreateButton($var5, 440, 36, 110, 25)
GUICtrlSetResizing (-1, $GUI_DOCKALL)
$contextmenu5 = GUICtrlCreateContextMenu ($Button5)         ; 创建右键菜单
$FormCLOSE5 = GUICtrlCreateMenuitem ("关闭",$contextmenu5) ; 关闭此窗口
GUICtrlSetOnEvent($FormCLOSE5, "FormCLOSE5")

GUICtrlSetOnEvent($Button2, "Activate2") 
GUICtrlSetOnEvent($Button3, "Activate3") 
GUICtrlSetOnEvent($Button4, "Activate4") 
GUICtrlSetOnEvent($Button5, "Activate5") 

If $var2 = "no" Then
        GUICtrlSetState ( $Button2, $GUI_HIDE)  ; 控件隐藏  $GUI_HIDE
Else                                        ; 否则
        GUICtrlSetState ( $Button2, $GUI_SHOW)  ; 控件显示  $GUI_SHOW
EndIf
If $var3 = "no" Then
        GUICtrlSetState ( $Button3, $GUI_HIDE)
Else
        GUICtrlSetState ( $Button3, $GUI_SHOW)
EndIf
If $var4 = "no" Then
        GUICtrlSetState ( $Button4, $GUI_HIDE)
Else
        GUICtrlSetState ( $Button4, $GUI_SHOW)
EndIf
If $var5 = "no" Then
        GUICtrlSetState ( $Button5, $GUI_HIDE)
Else
        GUICtrlSetState ( $Button5, $GUI_SHOW)
EndIf

EndFunc   ;==>wwwTab()  自定义的窗体按钮标签事件

;=================================================================
Func Activate1()
        _WinAPI_SetParent($Form1,$Form0)        ;用重设子窗口的方式来激活指定窗口。在SetParent之后,WinActivate,PostMessage都失效。        
EndFunc   ;==>Activate1

Func Activate2()
                 _WinAPI_SetParent($Form[2],$Form0)
EndFunc   ;==>Activate2

Func Activate3()
         _WinAPI_SetParent($Form[3],$Form0)        
EndFunc   ;==>Activate3

Func Activate4()
             _WinAPI_SetParent($Form[4],$Form0)
EndFunc   ;==>Activate4

Func Activate5()
             _WinAPI_SetParent($Form[5],$Form0)
EndFunc   ;==>Activate5
        
;----------------------------------------------------------------
Func Activate75()
        _IEErrorHandlerRegister ("MyErrFunc_Stop")
        $WebBrowser2.Stop
EndFunc   ;==>Activate75

Func Activate76()
        _IEErrorHandlerRegister ("MyErrFunc_Forward")      ;设定错误处理事件.
        $WebBrowser2.GoForward
    IniWrite ("web.ini", "Button", "Forward", "et" )        
EndFunc   ;==>Activate76

Func Activate77()
   _IEErrorHandlerRegister ("MyErrFunc_GoBack")
        $WebBrowser2.GoBack
    IniWrite ("web.ini", "Button", "GoBack", "et" )        
EndFunc   ;==>Activate77

Func Activate78()
        _IEErrorHandlerRegister ("MyErrFunc_Refresh")
        $WebBrowser2.Refresh  
        IniWrite ("web.ini", "Button", "Refresh", "et" )
EndFunc   ;==>Activate78

Func Activate79()
        _IEErrorHandlerRegister ("MyErrFunc_Navigate")
        $WebBrowser2.Navigate 
EndFunc   ;==>Activate79

Func Activate80()
         GUISwitch ($Form0) 
     $Form80 = GUICreate("帮助", 400, 300, 250, 214)
         $Button801 = GUICtrlCreateButton("关闭", 88, 180, 150, 30)
         GUICtrlSetOnEvent($Button801, "CLOSEActivate80")
     GUISetState(@SW_SHOW)
EndFunc   ;==>Activate80

Func CLOSEActivate80()
        _WinAPI_SetParent($Form80,$Form0)
        _WinAPI_MoveWindow($Form80, 0, 0, 0, 0, True)
EndFunc   ;==>Activate81

Func FormCLOSE2()
  _WinAPI_MoveWindow($Form[2], 0, 0, 0, 0, True)
  GUICtrlSetState ($Button2, $GUI_HIDE)
  IniDelete ("title.ini", "www", "title2")
EndFunc
Func FormCLOSE3()
  _WinAPI_MoveWindow($Form[3], 0, 0, 0, 0, True)
  GUICtrlSetState ($Button3, $GUI_HIDE)
  IniDelete ("title.ini", "www", "title3")
EndFunc
Func FormCLOSE4()
  _WinAPI_MoveWindow($Form[4], 0, 0, 0, 0, True)
  GUICtrlSetState ($Button4, $GUI_HIDE)
  IniDelete ("title.ini", "www", "title4")
EndFunc
Func FormCLOSE5()
  _WinAPI_MoveWindow($Form[5], 0, 0, 0, 0, True)
  GUICtrlSetState ($Button5, $GUI_HIDE)
  IniDelete ("title.ini", "www", "title5")
EndFunc

;----------------------------------------------------------------
Func Timer($hWnd, $uiMsg, $idEvent, $dwTime)
        If WinExists("IE内嵌不新建IE窗口") Then
                WinMove("IE内嵌不新建IE窗口","",@DesktopWidth,@DesktopHeight,0,0,1)
                Send("{Enter}")
        EndIf
EndFunc
;-----------------------------------------------------------------
Func MyErrFunc_Stop()
    $ErrorOutput = ""
    $ErrorOutput &= "停止打开!"
    MsgBox(0,"COM Error", $ErrorOutput)
    SetError(1)
    Return
EndFunc  ;==>MyErrFunc_Stop
Func MyErrFunc_Forward()
    $ErrorOutput = ""
    $ErrorOutput &= "无法前进!"
    MsgBox(0,"COM Error", $ErrorOutput)
    SetError(1)
    Return
EndFunc  ;==>MyErrFunc_Forward
Func MyErrFunc_GoBack()
    $ErrorOutput = ""
    $ErrorOutput &= "无法后退!"
    MsgBox(0,"COM Error", $ErrorOutput)
    SetError(1)
    Return
EndFunc  ;==>MyErrFunc_GoBack
Func MyErrFunc_Refresh()
    $ErrorOutput = ""
    $ErrorOutput &= "无法刷新!"
    MsgBox(0,"COM Error", $ErrorOutput)
    SetError(1)
    Return
EndFunc  ;==>MyErrFunc_Refresh
Func MyErrFunc_Navigate()
    $ErrorOutput = ""
    $ErrorOutput &= "没有主页!"
    MsgBox(0,"COM Error", $ErrorOutput)
    SetError(1)
    Return
EndFunc  ;==>MyErrFunc_Navigate
;----------------------------------------------------------------
Func address_bar_input()
        $addy = GUICtrlRead($address_bar_input)
                _StatusChange("Loading: " & $addy & "...")
                 WebBrowser1_Navigate()
         $WebBrowser2.Navigate( $addy)
            _StatusChange("Done.")
EndFunc

Func _StatusChange($message)
    GUICtrlSetData($status_bar, $message)
EndFunc   ;==>_StatusChange

;----------------------------------------------------------------

Func CLOSE()
                                $EventObject.Stop   ; 不再接收事件
                $EventObject=0      ; 关闭Event Object
                $WebBrowser1=0              ; 清除内存
                GUIDelete ()  
                DllCall($dll, "int", "KillTimer", "hwnd", 0, "uint", $TimerDLL)
                DllCallbackFree($Timer)
                DllClose($dll)
                                FileDelete("ini.ini")   ;直接删除
                    FileDelete("title.ini") 
                    FileDelete("url.ini") 
                    ;MsgBox(0, "谢谢", "报歉!学做的东西!...",3)
                                Exit
EndFunc

Func Activate81()
        CLOSE()  
EndFunc   ;==>Activate81

Func CLOSEClicked()
        CLOSE()                        
EndFunc
 楼主| 发表于 2010-7-18 14:56:31 | 显示全部楼层
回复 8# xunzhang22

游戏网页多开,实现多标签多开,同一站点多用户多标签不冲突..........
------------------------------------------------------------------------------------------


汗!有点难度。
 楼主| 发表于 2010-7-18 14:58:56 | 显示全部楼层
截了一个图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-7-18 15:19:43 | 显示全部楼层
打开网页的速度是不是比其它浏览器慢上很多?
发表于 2010-7-18 20:58:32 | 显示全部楼层
回复 11# dnbj2010


    AU3只能获取到IE的事件,却不能拦截,我研究了好长时间没有结果.......
你发的那个源码我早就看过了,对于AU3来说算是完美了,但是监控鼠标点击不是什么好办法啊,
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-27 18:28 , Processed in 0.117668 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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