andyto202 发表于 2017-5-1 21:56:08

【已解決】【请问如何让 autoit 常驻在系统列 ???】

本帖最后由 andyto202 于 2017-5-2 22:44 编辑

我有成功写出一个自动登入网页的 autoit
但是我希望它可以常驻在系统列
当开启特定要登入的网页时
它会自动填入帐号、密码

我想问
(1) 我本来是用
      Local $url = "http://localhost/xxx.php"
      Local $oIE = _IECreate($url, 1)
      自动登入的
      但是现在要如何侦测
      http://localhost/xxx.php 被开启
      才自动填入帐、密
      其它的网页不会动作??

andyto202 发表于 2017-5-1 22:16:47

我刚才写个测试
WinWaitActive("")
ConsoleWrite("ok")
发现当浏览器的标题符合上面那行时
的确会输出
OK
但是要怎么自动登入呢??
我要怎么抓到符合那个标题的 url
去带入到
Local $url = "符合那个标题的 url"
Local $oIE = _IECreate($url, 1)
上面的 $url 呢

kk_lee69 发表于 2017-5-2 02:27:32

回复 2# andyto202

$Form1 = GUICreate("Form1", 225, 277,Default,Default,-1)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
   Switch $nMsg
            Case -3
                Exit
    EndSwitch
WEnd

kk_lee69 发表于 2017-5-2 02:28:19

這樣不就常住在系統列了再把你的東西加入While 1的循環裡就好

andyto202 发表于 2017-5-2 08:12:22

回复 4# kk_lee69

謝謝 kk_lee69 大
那我要如何偵測說
開啟的 url 是我要的那個呢??
我如果用
WinWaitActive("")
去偵測
的確是可以
但是這樣子

#include <IE.au3>
Local $oUser, $oPass, $oSubmit
Local $sUser = "testUsername"
Local $sPass = "testPassword"
Local $url = "http://XXX/login.asp"
Local $oIE = _IECreate($url, 1)

上面的 $url 要怎麼把符合
WinWaitActive("")
的填入到
Local $url 變數裡呢??
謝謝

kk_lee69 发表于 2017-5-2 09:02:58

請貼出你的源碼

andyto202 发表于 2017-5-2 09:18:05

kk_lee69 大 你好
我的源碼如下
#include <IE.au3>

Local $oUser, $oPass, $oSubmit
Local $sUser = "user"
Local $sPass = "pass"
Local $url = "http://localhost/member/login.php"
Local $oIE = _IECreate($url, 1)

_IELoadWait($oIE)

$oInputs = _IETagNameGetCollection($oIE, "input")
for $oInput in $oInputs
    if $oInput.type = "text" And $oInput.name = "username" Then $oUser = $oInput
    if $oInput.type = "password" And $oInput.name = "password" Then $oPass = $oInput
    if $oInput.type = "submit" And $oInput.value = "確定" Then $oSubmit = $oInput
    if isObj($oUser) And isObj($oPass) And isObj($oSubmit) then exitloop
Next

$oUser.value = $sUser
$oPass.value = $sPass
_IEAction($oSubmit, "click")

_IELoadWait($oIE)
上面的是可以自動登入網頁的
我現在想要做的是
如果讓 autoit 常駐在系統列偵測
當符合 title 是

登入畫面 - Internet Explorer

的時候

上面可以自動登入的帳號、密碼 自動帶入
謝謝

kk_lee69 发表于 2017-5-2 09:35:15

回复 7# andyto202

試看看

#include <IE.au3>

$Form1 = GUICreate("Form1", 225, 277,Default,Default,-1)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
        Sleep(10)
        $HWnd=WinGetHandle("")
        IF IsHWnd($HWnd)=1 Then
        WinClose($HWnd)
        _Lgoin()
        EndIf
   Switch $nMsg
            Case -3
                Exit
        EndSwitch
                       
WEnd

Func _Lgoin()
       
Local $oUser, $oPass, $oSubmit
Local $sUser = "user"
Local $sPass = "pass"
Local $url = "http://localhost/member/login.php"
Local $oIE = _IECreate($url, 1)

_IELoadWait($oIE)

$oInputs = _IETagNameGetCollection($oIE, "input")
for $oInput in $oInputs
    if $oInput.type = "text" And $oInput.name = "username" Then $oUser = $oInput
    if $oInput.type = "password" And $oInput.name = "password" Then $oPass = $oInput
    if $oInput.type = "submit" And $oInput.value = "確定" Then $oSubmit = $oInput
    if isObj($oUser) And isObj($oPass) And isObj($oSubmit) then exitloop
Next

$oUser.value = $sUser
$oPass.value = $sPass
_IEAction($oSubmit, "click")

_IELoadWait($oIE)

EndFunc

zhaoceshi 发表于 2017-5-2 09:42:03

或者用这个,检测窗口,激活窗口

WinWait("""")
WinActivate(""") ;检查窗口并激活

andyto202 发表于 2017-5-2 10:06:05

回复 8# kk_lee69

kk_lee69 大
您這段代碼是偵測到有關 title 為
登入畫面.*Microsoft Edge
然後關閉現有的視窗
再開新的視窗登入嗎???
有辦法用原視窗登入嗎??

kk_lee69 发表于 2017-5-2 10:08:29

回复 10# andyto202

試看看

#include <IE.au3>

$Form1 = GUICreate("Form1", 225, 277,Default,Default,-1)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
        Sleep(10)
        $oIE = _IEAttach ("http://localhost/member/login.php","URL")
        IF @Error=0 Then
        _Lgoin()
        EndIf
   Switch $nMsg
            Case -3
                Exit
        EndSwitch
                       
WEnd


Func _Lgoin()
       
Local $oUser, $oPass, $oSubmit
Local $sUser = "user"
Local $sPass = "pass"
Local $url = "http://localhost/member/login.php"
;Local $oIE = _IECreate($url, 1)

_IELoadWait($oIE)

$oInputs = _IETagNameGetCollection($oIE, "input")
for $oInput in $oInputs
    if $oInput.type = "text" And $oInput.name = "username" Then $oUser = $oInput
    if $oInput.type = "password" And $oInput.name = "password" Then $oPass = $oInput
    if $oInput.type = "submit" And $oInput.value = "確定" Then $oSubmit = $oInput
    if isObj($oUser) And isObj($oPass) And isObj($oSubmit) then exitloop
Next

$oUser.value = $sUser
$oPass.value = $sPass
_IEAction($oSubmit, "click")

_IELoadWait($oIE)

EndFunc

andyto202 发表于 2017-5-2 10:49:17

回复 11# kk_lee69

謝謝 kk_lee69 大
這樣子可以成功
另外請問 kk_lee69 大
Switch $nMsg
            Case -3
                Exit
      EndSwitch
這幾行的用意是什麼呢??
感覺不加這幾行好像也可以{:face (382):}

kk_lee69 发表于 2017-5-2 10:53:45

回复 12# andyto202

While 1   當 1的時候    表示永遠成立   死循環
    Switch $nMsg切換到$nMsg接收消息
            Case -3      當消息=-3 代表 你按下了右上角的X
                Exit                     離開
      EndSwitch    完成切換跟 上面是一組的
WEnd跟上面是一組的

也就是說 你省略了 當然可以只是你的程式沒有正常退出的管道而已

andyto202 发表于 2017-5-2 11:04:54

回复 13# kk_lee69

kk_lee69 大
太感謝您了
您的熱心指導
讓我很快的能解決問題啊
真的很感謝{:face (88):}

kk_lee69 发表于 2017-5-2 11:39:16

回复 14# andyto202


    請注意板規
問題解決了 需要修改標題
页: [1] 2
查看完整版本: 【已解決】【请问如何让 autoit 常驻在系统列 ???】