-1

ソーシャル ネットワークにログインして、非アクティブなアカウントがいつリセットされるかを常に確認できるアプリケーションを作成しました。この例では、これらの名前がいつリセットされるかを確認するために、Xbox の Web サイトで無料のゲーマータグの変更を使用しています。Xbox.com にログインし、Web ブラウザーでゲーマータグの変更ページに移動するアプリケーションを作成しました。テキスト ボックス (すぐにリセットされる非アクティブなタグ) に必要なゲーマータグを入力し、[オートクリック] ボタンを押します。常にアカウント名を要求しようとします。そこで、このスクリプトを作成しましたが、タイムアウトが早すぎることに気付きました。このプログラムは、高速 (低速、中速、高速の 3 つの速度があります) では約 10 分しか続きませんが、低速ではもう少し長く続きます。ただし、ページをより長く機能させるには、数秒ごとにページを更新する必要があることに気付きました. これを行うと、アプリケーションの耐久性が大幅に向上し、約 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 ですが、さらに耐久性を高めるために refresh プロパティも備えています。

 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

私はここ数年 WebBrowser オブジェクトを扱っていませんが、あなたが endless で行き詰まる可能性があると信じていますWebBrowser1.IsBusy。ページをブラウズするときと似ていますが、読み込みが終わらないことがあります。その場合、何らかのタイムアウト メカニズムを使用して停止しWebBrowser1.Stop、ページへの移動を再試行する必要があります。

または、単に isbusy を無視して、ページを更新する前に強制的に停止します。最長タイマーの 500 は実際には 500 ミリ秒、つまり 0.5 秒であるため、タイマーを増やしてください。Web ページはそれほど速く読み込まれない可能性があります。

于 2013-04-02T14:53:08.207 に答える
0

あなたの説明から、ページを頻繁に更新すればするほど、ログアウトするまでの時間が短くなると言っているように聞こえます。タイマーの interval プロパティはミリ秒単位で測定されます。現時点で最も遅い設定は、それぞれ 500 ミリ秒で 170 ティックです。したがって、そのニックネームが現在利用可能かどうかを 85 秒ごとにチェックしています。間隔を1000または2000に設定する代わりに、かなり妥協することができます。

もう 1 つのオプションは、30 分ごとにログイン ページに移動し、再度ログインすることでしょうか?

ps。

使用する代わりに:

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

あなたはただ使うことができます:

If not WebBrowser1.IsBusy Then
    'code

少し読みやすくなりました。

サイドバー: あなたのプログラムはとてもクールだと思います :)

于 2013-04-02T09:05:13.840 に答える