Spammer Paussieren

08/15/2011 20:16 ♥ .Meroc' ♥#1
Hallo,

Ich möchte mein AutoIT wissen erweitern und wollte mal Fragen wie ich meinen Spam Bot durch drücken eines GUI Buttons Pausieren/Fortsetzen kann.


Script:
08/15/2011 23:26 Ludder231#2
Button mit func, dann ne endlosschleife und sleep drinne...
08/15/2011 23:34 KDeluxe#3
Wenn du dein Wissen ausweiten möchtest, solltest du bei der GUI anfangen. Diese schmeist dir Koda zwar zusammen, aber bei der Länge... Das geht auch kürzer.
Controls sollten eine nachvollziehbare Bezeichnung bekommen. Bei größeren Projekten bringen dir die Bezeichnungen ButtonX, $InputX, usw. nichts, außer du möchtest ständig nachgucken, was was ist. Das kostet nur wertvolle Zeit, außerdem ist es nervig.
Beim beenden des Programms klatscht man einfach nicht nervige Werbung rein... Was soll das? Die Credits kannst du im Grunde auch gleich streichen, diese gelten eigentlich dem, der dir hilft. Das könnte man natürlich weiter ausdiskutieren, aber wozu? Dafür wärst du wahrscheinlich viel zu uneinsichtig.
Ein weiteres grundlegendes Problem: Man startet in einer Dauerschleife keine 2. Dauerschleife. Deinem primitiven Lösungsweg kannst du entnehmen, wieso man das nicht macht. Dazu noch ein Sleep in Höhe von 5 Sekunden? Das ist 1. viel zu hoch und 2. unnötig.
Die GUI... Sie ist viel zu groß und hat zudem unnötige Buttons. Eine dunkle Farbe macht sich meiner Meinung nach auch nicht gut, aber hier teilen sich die Meinungen.
Zusammengefasst: Das Script sowie resultierendes Ergebnis ist für den Papierkorb.

Kommen wir zu den Lösungsvorschlägen:
Nicht unbedingt beitragend, aber überarbeite die GUI noch einmal. Das mit den Start/Stopp Buttons erreichst du ganz einfach mit einer Variable. Setze diese auf "True" bzw. "False". Es würde sich auch ganz einfach mit einem Button erledigen. Einfach $Variable = Not $Variable als "Schalter" benutzen. Das Delay in entsprechender Höhe kannst du ganz einfach mit Timern verwenden. Hierfür gibt es die Funktionen TimerInit() sowie TimerDiff().

Das ganze wird natürlich gekonnt verdrängt. Was her muss ist ein fertiges Script:
PHP Code:
#include <GUIConstantsEx.au3>

#Region GUI
$GUI GUICreate("Spammer by Bl4CkIsTheBest  "515215)
GUISetBkColor(0x716F64)
$I_Text1 GUICtrlCreateInput("Text 1"161648921)
$I_Text2 GUICtrlCreateInput("Text 2"164848921)
$I_Delay GUICtrlCreateInput("1000"168815321)
$B_Credits GUICtrlCreateButton("Credits"18480153330)
$B_Advertising GUICtrlCreateButton("Advertising"35280153330)
$B_Info GUICtrlCreateButton("Informationen"16120153570)
$B_Start GUICtrlCreateButton("Start"184120153570)
$B_Stop GUICtrlCreateButton("Pause"352120153570)
For 
$Control $B_Credits To $B_Stop
    GUICtrlSetFont
($Control128004"Comic Sans MS")
    
GUICtrlSetCursor($Control0)
Next
GUICtrlCreateLabel
("Copyright by Bl4CkIsTheBest                                    http://cleanii.eu/ - Webdesigns"1618448621)
GUICtrlSetFont(-194006"Comic Sans MS")
GUICtrlSetBkColor(-10xFFFFFF)
GUISetState(@SW_SHOW)
#EndRegion

Global $Active$Timer$FirstText True

While Sleep(10)
    
$nMsg GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$B_Credits
            MsgBox
(0"Credits""Blaaa")
        Case 
$B_Advertising
            ShellExecute
("http://cleanii.eu/")
            
ShellExecute("http://blackworld3.com/")
        Case 
$B_Info
            MsgBox
(0"""Hier stehen unnütze Informationen!")
        Case 
$B_Stop
            $Active 
False
        
Case $B_Start
            $Active 
True
            $Timer 
0
            $FirstText 
True
    
EndSwitch

    If 
$Active Then
        
If TimerDiff($Timer) >= GUICtrlRead($I_Delay) And Not WinActive($GUIThen
            Send
("{ENTER}")
            If 
$FirstText Then
                Send
(GUICtrlRead($I_Text1))
            Else
                
Send(GUICtrlRead($I_Text2))
            EndIf
            
Send("{ENTER}")
            
$FirstText Not $FirstText
            $Timer 
TimerInit()
        EndIf
    EndIf
WEnd 
Die Erklärungen findest du mit der F1 Hilfe oder auch mit Google.