Du bist nicht angemeldet.

1

24.03.2012, 19:15

anfrage starten/stoppen per hotkey

Hallo

ich habe mir einen kleinen bot geschrieben
nun wollte ich das man mit F1 den bot starten und mit F2 stoppen kann
leider weiß ich nicht wie ich das mache
hier mal mein script
#include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> $Form1 = GUICreate("Leertasten Spammer", 138, 58, 192, 124) $Button1 = GUICtrlCreateButton("Start", 0, 0, 65, 25) $Button2 = GUICtrlCreateButton("Stop", 72, 0, 65, 25) $Button3 = GUICtrlCreateButton("Schließen", 32, 32, 65, 25) GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Button1 AdlibRegister('_Space', 1700) Case $msg = $Button2 AdlibUnregister() Case $msg = $Button3 Exit EndSelect Wend Func _Space() Send("{^}") MouseClick("left") MouseClick("left") MouseClick("left") MouseClick("left") MouseClick("left") MouseClick("left") MouseClick("left") Send("1") EndFunc

AutoIt-Quellcode

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
 
$Form1 = GUICreate("Leertasten Spammer", 138, 58, 192, 124)
$Button1 = GUICtrlCreateButton("Start", 0, 0, 65, 25)
$Button2 = GUICtrlCreateButton("Stop", 72, 0, 65, 25)
$Button3 = GUICtrlCreateButton("Schließen", 32, 32, 65, 25)
GUISetState()
 
While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
        Case $msg = $Button1
            AdlibRegister('_Space', 1700)
        Case $msg = $Button2
            AdlibUnregister()        
         Case $msg = $Button3
            Exit       
    EndSelect
 Wend
 
Func _Space()
    Send("{^}")
    MouseClick("left")
    MouseClick("left")
    MouseClick("left")
    MouseClick("left")
    MouseClick("left")
    MouseClick("left")
    MouseClick("left")
    Send("1")
EndFunc


kann mir da er helfen

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Terrax2« (24.03.2012, 19:29)


2

24.03.2012, 19:29

erstell eine globale Variable:
Global $playing = 0

AutoIt-Quellcode

 1 
Global $playing = 0


In der Funktion von F1 stellst du die Variable
$playing = 1

AutoIt-Quellcode

 1 
$playing = 1

In der Funktion von F2 stellst du die Variable
$playing = 0

AutoIt-Quellcode

 1 
$playing = 0


und in deiner while-schleife packst du deinen code in eine if-bedingung
If $playing Then ; Dein Code EndIf

AutoIt-Quellcode

 1 
 2 
 3 
If $playing Then
; Dein Code
EndIf


edit:
ich sehe grad, du arbeitest mit adlib, willst du die adlibs starten und stoppen? wenn ja, pack die adlibs in die f1 und f2 funktionen
Wenn ihr zufrieden mit dem Support hier seid, würde ich mich natürlich über eine positive Rezension freuen.
Wenn etwas nicht stimmt, bitte erst hier das Problem melden, bevor ihr eine schlechte Rezension schreibt.

3

24.03.2012, 19:34

#include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> $Form1 = GUICreate("Leertasten Spammer", 138, 58, 192, 124) $Button1 = GUICtrlCreateButton("Start", 0, 0, 65, 25) $Button2 = GUICtrlCreateButton("Stop", 72, 0, 65, 25) $Button3 = GUICtrlCreateButton("Schließen", 32, 32, 65, 25) GUISetState() Global $playing = 0 HotKeySet("{F1}", "_start") HotKeySet("{F2}", "_stop") While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Button1 AdlibRegister('_Space', 1700) ; alle 10 ms wird die Funktion aufgerufen Case $msg = $Button2 AdlibUnregister() Case $msg = $Button3 Exit EndSelect Wend Func _start() $playing = 1 EndFunc Func _stop() $playing = 0 EndFunc If $playing Then AdlibRegister('_Space', 1700) EndIf Func _Space() Send("{^}") MouseClick("left") MouseClick("left") MouseClick("left") MouseClick("left") MouseClick("left") MouseClick("left") MouseClick("left") Send("1") EndFunc

AutoIt-Quellcode

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
 51 
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
 
$Form1 = GUICreate("Leertasten Spammer", 138, 58, 192, 124)
$Button1 = GUICtrlCreateButton("Start", 0, 0, 65, 25)
$Button2 = GUICtrlCreateButton("Stop", 72, 0, 65, 25)
$Button3 = GUICtrlCreateButton("Schließen", 32, 32, 65, 25)
GUISetState()
Global $playing = 0
HotKeySet("{F1}", "_start")
HotKeySet("{F2}", "_stop")
While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
        Case $msg = $Button1
            AdlibRegister('_Space', 1700) ; alle 10 ms wird die Funktion aufgerufen
        Case $msg = $Button2
            AdlibUnregister()        
         Case $msg = $Button3
            Exit       
    EndSelect
 Wend
 
Func _start()
   $playing = 1
EndFunc 
 
Func _stop()
   $playing = 0
EndFunc
 
If $playing Then
   AdlibRegister('_Space', 1700)
EndIf
 
Func _Space()
    Send("{^}")
    MouseClick("left")
    MouseClick("left")
    MouseClick("left")
    MouseClick("left")
    MouseClick("left")
    MouseClick("left")
    MouseClick("left")
    Send("1")
EndFunc

so habe ich das nun aber das funktioniert leider nicht
was ist falsch?

4

24.03.2012, 19:40

Bitte autoit-BBCode benutzen ([code=autoit])

siehe mein "Edit" oben,
hab dein Code ma bissl umschrieben (die Includes brauchst du hier eigentlich nicht)
$gui = GUICreate("Leertasten Spammer", 138, 58, 192, 124) $btnStart = GUICtrlCreateButton("Start", 0, 0, 65, 25) $btnStop = GUICtrlCreateButton("Stop", 72, 0, 65, 25) $btnClose = GUICtrlCreateButton("Schließen", 32, 32, 65, 25) GUISetState() HotKeySet("{F1}", "_start") HotKeySet("{F2}", "_stop") While Sleep(10) $msg = GUIGetMsg() Select Case $msg = -3 Or $msg = $btnClose Exit Case $msg = $btnStart _start() Case $msg = $btnStop _stop() EndSelect Wend Func _start() AdlibRegister('_Space', 1700) EndFunc Func _stop() AdlibUnregister() EndFunc Func _Space() Send("{^}") For $i = 1 To 7 MouseClick("left") Next Send("1") EndFunc

AutoIt-Quellcode

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
$gui = GUICreate("Leertasten Spammer", 138, 58, 192, 124)
$btnStart = GUICtrlCreateButton("Start", 0, 0, 65, 25)
$btnStop = GUICtrlCreateButton("Stop", 72, 0, 65, 25)
$btnClose = GUICtrlCreateButton("Schließen", 32, 32, 65, 25)
GUISetState()
 
HotKeySet("{F1}", "_start")
HotKeySet("{F2}", "_stop")
 
While Sleep(10)
    $msg = GUIGetMsg()
    Select
        Case $msg = -3 Or $msg = $btnClose
            Exit
        Case $msg = $btnStart
            _start()
        Case $msg = $btnStop
            _stop()
    EndSelect
Wend
 
Func _start()
    AdlibRegister('_Space', 1700)
EndFunc 
 
Func _stop()
    AdlibUnregister()
EndFunc
 
Func _Space()
    Send("{^}")
    For $i = 1 To 7
        MouseClick("left")
    Next
    Send("1")
EndFunc
Wenn ihr zufrieden mit dem Support hier seid, würde ich mich natürlich über eine positive Rezension freuen.
Wenn etwas nicht stimmt, bitte erst hier das Problem melden, bevor ihr eine schlechte Rezension schreibt.

5

24.03.2012, 19:46

Danke

also starten funktioniert schonmal
aber stoppen kann ich das ganze nicht
ich drücke F1 und das proggi legt los

drücke ich f2 bleibt es aber an wird aber nicht angehalten

6

24.03.2012, 23:15

vielleicht vor dem adlibregister nochma adlibunregister (bzw _stop()) benutzen, damit es nicht 2x ausgeführt wird?
bin mir nicht sicher, ob eine funktion 2x in adlib ausgeführt werden kann, wäre aber logisch
Wenn ihr zufrieden mit dem Support hier seid, würde ich mich natürlich über eine positive Rezension freuen.
Wenn etwas nicht stimmt, bitte erst hier das Problem melden, bevor ihr eine schlechte Rezension schreibt.

Freaky

Fortgeschrittener

(23)

Beiträge: 287

Beruf: Schüler

Renommeemodifikator: 4

Kein Support für kommerzielle Plugins

  • Private Nachricht senden

7

25.03.2012, 05:42

Also, weiß ja nicht was ihr mit adlib.... machen wollt, aber es gibt da doch ne viel schönere Lösung
#include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> Global $iStart = False $Form1 = GUICreate("Leertasten Spammer", 138, 58, 192, 124) $Button1 = GUICtrlCreateButton("Start", 0, 0, 65, 25) $Button2 = GUICtrlCreateButton("Stop", 72, 0, 65, 25) $Button3 = GUICtrlCreateButton("Schließen", 32, 32, 65, 25) GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Button1 $iStart = True Case $msg = $Button2 $iStart = False Case $msg = $Button3 Exit EndSelect If ($iStart = True) Then ; Alles hier wird nur aufgefüht wenn $iStart auf True ist Send("{^}") For $i = 1 To 7 MouseClick("left") Next Send("1") EndIf Wend

AutoIt-Quellcode

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
 
Global $iStart = False
 
$Form1 = GUICreate("Leertasten Spammer", 138, 58, 192, 124)
$Button1 = GUICtrlCreateButton("Start", 0, 0, 65, 25)
$Button2 = GUICtrlCreateButton("Stop", 72, 0, 65, 25)
$Button3 = GUICtrlCreateButton("Schließen", 32, 32, 65, 25)
GUISetState()
 
While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
        Case $msg = $Button1
            $iStart = True
        Case $msg = $Button2
            $iStart = False     
         Case $msg = $Button3
            Exit       
	EndSelect
 
	If ($iStart = True) Then ; Alles hier wird nur aufgefüht wenn $iStart auf True ist
		Send("{^}")
		For $i = 1 To 7
			MouseClick("left")
		Next
		Send("1")
	EndIf
 Wend

Ich würde es an deiner Stelle so nicht ausführen da du probleme beim schliessen bekommen könntest ;)

freewilly

unregistriert

8

17.04.2012, 12:17

Zitat

Danke



also starten funktioniert schonmal

aber stoppen kann ich das ganze nicht

ich drücke F1 und das proggi legt los



drücke ich f2 bleibt es aber an wird aber nicht angehalten

Hatte das gleiche Problem letztens bei meinem Fernseher, er wollte nicht mehr starten und stoppen :P Habe mir nach jahrelanger Treue gegenüber meinem Röhrenfernseher einen Samsung LED Fernseher zugelegt!
Deine Lösung für das eigentlich Problem ist sehr gut und vor allem einfacher! Falls es bei mir mal haken sollte, weiß ich ja jetzt wo ich schauen muss.