AutoHotkey的。网站登录通知

时间:2013-07-29 16:37:52

标签: autohotkey

我希望在某些会员登录网站时收到通知。该站点的登录成员列表通常扩展到三个或四个HTML页面,每个URL都相同,除了最后的页码。我有一个文本文件列出了我想要通知的少数成员。如果我列表中的任何成员登录,下面的脚本会成功通知我。它会下载第一页,搜索该页面上的每个成员,通知是否找到,然后在每个剩余页面重复该过程,然后再睡5分钟并开始结束了。

我希望有很多方法可以改善这一点,但对于初学者,我想解决重复通知问题。只要他们登录,我就会每五分钟通知一次同一个成员。一旦我确定了一个特定成员的MsgBox,我希望脚本继续搜索成员而不重新通知我任何先前确认的登录。我想知道我是否应该重新思考这一切,完全摆脱MsgBox,并且有一个带有成员/状态列表的始终打开的窗口,以及只有在状态发生变化时才有SoundBeep。可以使用AutoHotKey来实现吗?我最近才找到AHK,而且我没有编程或脚本编写经验,所以我花了很长时间才能想出我到目前为止所拥有的东西。感谢您的任何帮助和建议。

Loop
{
    n := 1
    While n < 5
    {
        UrlDownloadToFile, website/LoggedIn&page=%n%, Source_%n%.txt
        FileRead, PageVar_%n%, Source_%n%.txt
        Loop, read, MemberList.txt
        {
            Loop, parse, A_LoopReadLine, `n
            {
                MemberVar = %A_LoopField%
                IfInString, PageVar_%n%, %MemberVar%
                {
                    SoundBeep
                    MsgBox, 4096, Logged In, %MemberVar% is logged in
                }
            }   
        }
        n := n + 1
    }
    Sleep 300000
}

1 个答案:

答案 0 :(得分:0)

好吧这可能比你需要的多一点

但试一试,看看它是否适合你...

; Create the ListView with one column, Name:
Gui, Add, ListView, r20 w200 vMyListView, Name
; Create a object "online"
online := []
gosub, check ; Run the subpart one time
Settimer, check, 300000 ; and then this will run the cheak evry 300000 ms
return


check:
Gui, show ; Show the listveiw
GuiControl, -Redraw, MyListView ; Stop the listveiw from updateing
While A_Index < 5
{
    Url = website/LoggedIn&page=%A_Index%
    Source := URLToVar(URL)
    FileRead, Membs, MemberList.txt
    Loop, parse, Membs, `n
    {
        IfInString, Source, %A_LoopField%
        {
                SoundBeep
                Online[A_LoopField] := true
        }
        else if Online[A_LoopField]
            Online.Remove(A_LoopField)
    }
}
LV_Delete()
for key in online
{
    msgbox % Key
    LV_Add("", Key)
}
GuiControl, +Redraw, MyListView ; let the listveiw update
Return

GuiClose:  ; Indicate that the script should exit automatically when the window is closed.
ExitApp

URLToVar(URL) {
    ComObjError(0)
    WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
    WebRequest.Open("GET", URL)
    WebRequest.Send()
    Return WebRequest.ResponseText()
        , ComObjError(0)
    }

希望它可以帮助你