骗子 发表于 2011-6-7 19:13:35

关于AdlibRegister的用法

本帖最后由 骗子 于 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

hzxymkb 发表于 2011-6-7 23:10:27

能!
参考帮助文件
我眼很困了,就不帮你改了!

love5173 发表于 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]
查看完整版本: 关于AdlibRegister的用法