-1

我制作了一个应用程序,可以登录社交网络并不断检查非活动帐户何时被重置。在这种情况下,我在他们的网站上使用 Xbox 的免费玩家代号更改来查看这些名称何时重置。我创建了一个应用程序,我在其中登录 Xbox.com 并导航以更改网络浏览器上的玩家标签页面,在该页面中,我在文本框中输入我想要的玩家标签(一个将很快重置的非活动标签),我点击“自动点击”按钮,并且它不断尝试声明帐户名称。所以我创建了这个脚本,但后来我意识到它会很快超时。该程序在快速时只会持续大约 10 分钟(有 3 种速度,慢 - 中 - 快),但在慢速时会持续更长时间。然而,我意识到我必须每隔几秒钟刷新一次页面才能让它工作更长时间。一旦我这样做了,应用程序就会更加持久,并且持续了大约 30 多分钟。但是,它仍然超时。有些人制作的这些脚本可以持续几天,但我的目标只是有一天。所以我问是否有人知道我可以如何改进这一点?这是我的脚本的一部分。我有一个按钮,一旦点击,计时器就会自动点击索赔按钮。

所以我的按钮:

Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    If RadioButton1.Checked = True Then
        Timer1.Interval = 40
    ElseIf RadioButton2.Checked = True Then
        Timer1.Interval = 175
    Else
        Timer1.Interval = 500
    End If

    If ((WebBrowser1.IsBusy)) Then



    Else

        Timer1.Enabled = True



    End If


End Sub

然后是 Timer1,它执行自动点击,但也具有刷新属性以使其更耐用:

 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick



    If Not number_of_ticks > 170 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

我不确定有很多方法可以让它持续更长时间,但如果有人对如何做到这一点有任何线索,我将非常感激。

4

2 回答 2

0

根据您的描述,您似乎是在说刷新页面的频率越高,注销的时间就越短。Timer 的间隔属性以毫秒为单位,目前您的最慢设置是 170 个滴答声,每个滴答声 500 毫秒。因此,您每 85 秒检查一次该昵称现在是否可用。我认为你可以妥协很多,而不是将间隔设置为 1000 或 2000。

您的另一个选择是每 30 分钟导航到登录页面并再次登录?

附言。

而不是使用:

If ((WebBrowser1.IsBusy)) Then
    Else
        'code

你可以只使用:

If not WebBrowser1.IsBusy Then
    'code

它看起来更容易阅读 imo。

侧边栏:我认为你的程序很酷:)

于 2013-04-02T09:05:13.840 回答
0

几年来我没有使用过 WebBrowser 对象,但我相信你可能会被卡在无止境WebBrowser1.IsBusy的 . 它类似于当您浏览到一个页面时,有时它永远不会结束加载。在这种情况下,您需要有某种超时机制来停止,WebBrowser1.Stop然后尝试再次导航到该页面。

或者干脆忽略 isbusy 并在刷新页面之前强制停止。增加计时器,因为您最长的 500 计时器实际上是 500 毫秒,即 0.5 秒 - 您的网页加载速度可能不会那么快。

于 2013-04-02T14:53:08.207 回答