因此,我最近创建了一个脚本,可以登录到各种网站,例如 Twitter、Xbox、YouTube,它会检查“用户名”何时被释放。这些社交网络服务中的大多数在这么久之后,都会删除不活跃的帐户并允许这些帐户被认领。所以用户名为“John391”的用户只要处于非活动状态就可以获得用户名“John”,然后网络将释放它。所以我的脚本登录到这些网站,并允许您在文本框中输入您想要的用户名,然后单击提交。该程序不断尝试在它可用时声明它。但是,我不想使用文本框,而是想使用带有列表的记事本,就像这样:
John
Achilles
Richard
Logan
所以在它试图认领 John 之后(如果 John 仍然不可用),然后它会去 Achilles 等等。到目前为止,这是我的脚本,我有一个计时器和一个按钮来完成大部分工作。计时器用于不断检查文本框值中的内容,而按钮只是启动该过程。我还必须提到,当我第一次开始这样做时,我的程序继续超时,我发现解决这个问题的唯一方法是暂停声明并刷新页面,但这很好。无论如何,让我解释一下我的脚本:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If Not number_of_ticks > NumericUpDown1.Value Then
number_of_ticks += 1
If ((WebBrowser1.IsBusy)) Then
Else
If WebBrowser1.Url.ToString = "https://live.xbox.com/en-US/ChangeGamertag" Then
WebBrowser1.Document.GetElementById("NewGamertag").SetAttribute("value", txtTurbo.Text)
WebBrowser1.Document.GetElementById("claimIt").InvokeMember("Click")
Else
WebBrowser1.Navigate("https://live.xbox.com/en-US/ChangeGamertag")
End If
End If
Else
'number_of_ticks has exceed the maximum amount of allowed ticks
Timer1.Enabled = False
WebBrowser1.Refresh()
number_of_ticks = 0
Timer1.Enabled = True
End If
End Sub
正如您在此处看到的计时器,它检查 number_of_ticks 以确定页面何时刷新。这也是由使用该程序的人设置的。通常它是 250,所以它会尝试直到 250,然后刷新。它也有一点保护,我注意到如果它试图在页面未加载时声明它会使程序无响应,所以我抛出了几个 if 语句来解决这个问题。当然,该按钮仅具有启用计时器工作的命令和一些其他次要功能。
现在,我想要做的是,而不是使用文本框 txtTurbo 来允许一遍又一遍地声明,我想要一个记事本来列出要声明的内容。所以我知道这个值会以某种方式改变:
WebBrowser1.Document.GetElementById("NewGamertag").SetAttribute("value", txtTurbo.Text)
它将被制成流式传输记事本/txt文件以读取要声明的文件,并且在每次声明后它应该更改为记事本/txt文件的下一行。但是,我没有阅读文本文件的经验,直到大约一个月前我才知道这是可能的。我想知道是否有人可以引导我朝着正确的方向前进?