找回密码
 加入
搜索
查看: 3153|回复: 2

[GUI管理] 关于AdlibRegister的用法

[复制链接]
发表于 2011-6-7 19:13:35 | 显示全部楼层 |阅读模式
本帖最后由 骗子 于 2011-6-7 19:27 编辑

在GUI内嵌了两个IE窗口,我想用一个按钮来控制两个IE窗口同时进行某项工作,就像下面的那样一个每个3秒跳转到WWW.163.COM一次,一个每1秒跳转一次。
这个能用AdlibRegister来实现吗?  我写的好像只运行了一次就停止了,我看TOOLTIP出来的数字就定在1上面不懂了

#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
HotKeySet("{F7}", "Terminate")
HotKeySet('{F8}', '_HIShow')
Dim $H = True
_IELoadWaitTimeout (2000)

$wangzhi2 = "www.sohu.com"

$wangzhi1 = "www.163.com"

_IEErrorHandlerRegister()

$oIE2 = _IECreateEmbedded()
$oIE1 = _IECreateEmbedded()
GUICreate("双IE窗口", 800, 600, 1, 1)
$GUIActiveX = GUICtrlCreateObj($oIE2, 5, 40, 790, 290)
$GUIActiveX1 = GUICtrlCreateObj($oIE1, 5, 340, 790, 290)
$GUI_Button_Home1 = GUICtrlCreateButton("2个IE同时操作", 200, 3, 190, 25)
GUISetState()
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;~ _IENavigate($oIE2, $wangzhi2)
;~ _IENavigate($oIE1, $wangzhi1)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
GUISetState()

While 1
        $msg = GUIGetMsg()
        Select
                Case $msg = -3
                        Exit
;~                 
                Case $msg = $GUI_Button_Home1
                        $i = 0
                        AdlibRegister( _gongzuo($oIE2),1000)
                        AdlibRegister( _gongzuo($oIE1),3000)
;~                         AdlibunRegister( _gongzuo($oIE2))
;~                         AdlibunRegister( _gongzuo($oIE1))
;~ _gongzuo($oIE1)
;~ _gongzuo($oIE2)                

        EndSelect
WEnd
Exit
Func _gongzuo($oIExx)
        
;~         $oiexx.Navigate("www.163.com")
        _IENavigate($oIExx,"http://www.163.com")
        ToolTip($i)
        $i += 1
        EndFunc


Func _HIShow()
        If $H = True Then
                GUISetState(@SW_HIDE)
                $H = False
        Else
                GUISetState(@SW_SHOW)
                $H = True
        EndIf
EndFunc   ;==>_HIShow
Func Terminate()
        Exit 0
EndFunc   ;==>Terminate
发表于 2011-6-7 23:10:27 | 显示全部楼层
能!
参考帮助文件
我眼很困了,就不帮你改了!
发表于 2011-6-8 08:45:43 | 显示全部楼层
本帖最后由 love5173 于 2011-6-8 08:56 编辑

回复 1# 骗子
最好是注册成两个自定义函数,我看帮助上用的是不带参数的,我用的时候也是加上括弧就出问题,后来也没深究,但是我知道注册两个自定义函数是运行没问题的!
你可以试试去掉括弧,这样先解决手头的问题,在跟大家讨论!
#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
HotKeySet("{F7}", "Terminate")
HotKeySet('{F8}', '_HIShow')
Dim $H = True
_IELoadWaitTimeout (2000)
 
$wangzhi2 = "www.sohu.com"
 
$wangzhi1 = "www.163.com"
 
_IEErrorHandlerRegister()
 
$oIE2 = _IECreateEmbedded()
$oIE1 = _IECreateEmbedded()
GUICreate("双IE窗口", 800, 600, 1, 1)
$GUIActiveX = GUICtrlCreateObj($oIE2, 5, 40, 790, 290)
$GUIActiveX1 = GUICtrlCreateObj($oIE1, 5, 340, 790, 290)
$GUI_Button_Home1 = GUICtrlCreateButton("2个IE同时操作", 200, 3, 190, 25)
GUISetState()
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;~ _IENavigate($oIE2, $wangzhi2)
;~ _IENavigate($oIE1, $wangzhi1)
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;GUISetState()
 
While 1
        $msg = GUIGetMsg()
        Select
                        Case $msg = -3
                                AdlibUnRegister ( "_gongzuo1")
                                AdlibUnRegister ( "_gongzuo2")
                        Exit
;~              
                Case $msg = $GUI_Button_Home1
                        $i = 0
                        AdlibRegister( "_gongzuo1",1000)
                        AdlibRegister( "_gongzuo2",3000)
;~                      AdlibunRegister( _gongzuo($oIE2))
;~                      AdlibunRegister( _gongzuo($oIE1))
;~ _gongzuo($oIE1)
;~ _gongzuo($oIE2)              
 
        EndSelect
WEnd
Exit
Func _gongzuo1()
        
;~      $oiexx.Navigate("www.163.com")
        _IENavigate($oIE1,$wangzhi2)
        ToolTip($i)
        $i += 1
EndFunc
Func _gongzuo2()
        
;~      $oiexx.Navigate("www.163.com")
        _IENavigate($oIE2,$wangzhi1)
        ToolTip($i)
        $i += 1
EndFunc
 
 
Func _HIShow()
        If $H = True Then
                GUISetState(@SW_HIDE)
                $H = False
        Else
                GUISetState(@SW_SHOW)
                $H = True
        EndIf
EndFunc   ;==>_HIShow
Func Terminate()
        Exit 0
EndFunc   ;==>Terminate

不过你最好用事件模式,GUI严重迟钝

评分

参与人数 1金钱 +20 贡献 +5 收起 理由
骗子 + 20 + 5 谢谢,我再试试

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-21 05:50 , Processed in 0.073067 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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