我希望在某些会员登录网站时收到通知。该站点的登录成员列表通常扩展到三个或四个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
}
答案 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)
}
希望它可以帮助你