Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 07:01

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Erinnermich

Discussion on Erinnermich within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
Elborod's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 74
Received Thanks: 3
Erinnermich

Servus!

Ich bin grad dabei, einen Bot zu schreiben, der mich alle 35sec daran erinnert, dass ich etwas machen soll. Dazu wollte ich gerne eine Progressbar und ein Soundfile (mp3) verwenden.
Die Sounddatei liegt im gleichen Ordner (genauso wie das Bild für das GUI) und wird mit ".\Dateiname" aufgerufen.
Damit man die Zeit bis zum nächsten mal sieht, wollte ich sie gerne in einer Progressbar darstellen.

Der Basicbefehl für Progressbar schaut so aus:

PHP Code:
ProgressOn("Progress Bar""Sample progress bar""Working...")

For 
$i 0 To 100
    ProgressSet
($i)
    
Sleep(5)
Next

ProgressSet
(100"Done!")
Sleep(750)
ProgressOff() 
Da ich so nicht wirklich weiter kam, recherchierte ich ein bisschen im Internet und fand diesen Code:
PHP Code:
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 GUICreate("[Autoit] - 014 - Progressbar"600100, -1, -1)
$Progress1 GUICtrlCreateProgress(1010580,30)
GUICtrlSetLimit(-1200100)
$btnLos GUICtrlCreateButton("Los"140,50100)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$btnLosLangsam
            GUICtrlSetData
($Progress1,0)
            
setPro()
            
AdlibRegister("setPro",1000)
    
    EndSwitch
WEnd

Func setPro
()
    
$curValue GUICtrlRead($Progress1)
    if 
$curValue 100 Then $curValue += 10
    GUICtrlSetData
($Progress1$curValue)
EndFunc 


Leider brachte ich nach 2 Stunden herumprobieren und Tutorials anschauen immer noch nicht das gewünschte Ergebniss auf den Bildschirm.

Hier nochmal genau was eigentlich meine Pläne waren:

1.) GUI Fenster mit einem Start-Button und einer Progressbar
1a.) Der Start-Button löst nach ::WinMinimizeAll:: (sleep (1000)) eine MsgBox aus.
1.b) Die Progressbar zeigt eine Zeitspanne von 35sec an.
2.) Mit der HotKeyTaste {#} wird der Timer gestartet, bei erneutem Drücken wird der Timer angehalten und resetet.
Dies müsste mit diesem Code funktionieren:

PHP Code:
$y 0

Hotkeyset
("{#}"'start')

Func start()
    
$y 1
    Hotkeyset
("{#}"'pause')
    While 
1
        
If $y 0 Then ExitLoop
        sleep 
(5000)
    
        
SoundPlay(".\Schwammerl.mp3",1)
    
WEnd
EndFunc

Func pause
()
 
$y 0
    Hotkeyset
("{a}"'start')
    
ConsoleWrite('+Puse' & @CRLF)
EndFunc 
3.) Jedes mal wenn der Balken auf 100% oder 35sec ist, sollte mit

PHP Code:
SoundPlay(".\File.mp3",1
ein Soundfile aus dem gleichen Ordner abgespielt werden.





Die GUI kann ich mir schon selber zusammen basteln.. ;D
Hat wer von euch eine Idee wie das zu lösen wäre?


By the way:
Progressbar einfärben geht das auch anders als so:
PHP Code:
GUISetBkColor(0x000000)
DllCall('uxtheme.dll''none''SetThemeAppProperties''int'0)
$Progress1 GUICtrlCreateProgress(641655341)
GUICtrlSetColor(-10x00FF00

Das Design is eher nicht so das Gelbe vom Ei...





Grüße Stoani!
Elborod is offline  
Old 05/04/2011, 23:21   #2
 
omer36's Avatar
 
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,254
ist zwar bischen umständlich geschrieben, aber meinste so?

PHP Code:
#Include <Misc.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>


#Region ### START Koda GUI section ### Form=
$Form1 GUICreate("Form1"40080294207)
$Progress1 GUICtrlCreateProgress(101037725)
GUICtrlSetState(-1$GUI_DISABLE)
$Button1 GUICtrlCreateButton("start"150408933$WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Button1
            start
()
    EndSwitch
WEnd


Func start
()
Local $timer$end 0

MsgBox
("","","Timer wurde zurück gesetzt")
GUICtrlSetData($Progress10)

$timer TimerInit()

While 
Not _IsPressed("BF") And Not _IsPressed("1B")
    For 
$i 0 To 100
        
If TimerDiff($timer) >= 35000/100 Then ;35000 für 35sec
            GUICtrlSetData
($Progress1GUICtrlRead($Progress1) + 1)
            
$timer TimerInit()
        EndIf
    
Next
    
If GUICtrlRead($Progress1) >= 100 Then
        $end 
1
        ExitLoop
    
EndIf
WEnd

If _IsPressed("1B"Then Exit
If 
_IsPressed("BF"Then start()

If 
$end 1 Then ;um mehrmaliges aufrufen zu vermeiden
    MsgBox
("","""Zeit ist um") ;hier dann der restwie zb deien .mp3
EndIf

EndFunc 
omer36 is offline  
Thanks
1 User
Old 05/04/2011, 23:29   #3
 
elite*gold: 0
Join Date: Dec 2009
Posts: 1,622
Received Thanks: 2,070
Ähm..

Ich will dir ja nicht zu nahe treten, aber worin soll der sinn bestehen, eine Msgbox alle 35 sekunden zu öffnen?

1. Man würde dadurch nur genervt werden, anstatt sich an etwas zu "erinnern"
2. Wenn man etwas nicht vergessen will, kann man es sich auch notieren.

Naja ich find die idee doof, und wenn du es nur für den eigengebrauch willst, kannst du es doch ohne gui und dem ganzem kram machen :O
freehuntx is offline  
Old 05/06/2011, 21:34   #4
 
Elborod's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 74
Received Thanks: 3
Wink

Sooo, endlich komm ich dazu, die Antworten zu checken. Omer danke für die wie üblich flotte und gute Antwort!

@freehuntx

Brauchst du mehr Beiträge oder ist dein Leben echt so langweilig....
Ob du dass ganze sinnvoll findest oder nicht, ist mir ziemlich egal...





@Omer

Ich bin derweilen mit meinem Script ziemlich zu dem Ergeniss gekommen, dass ich haben wollte! Siehe unten:



PHP Code:
$y 0
Hotkeyset
("{#}""start")
Hotkeyset("{o}""_exit")

MsgBox(0"Mushroooooooms","Hallo! Hotkeys: #=run o=exit")

;
Zählt mit einer Progressbar von 100auf 0in 35sec und spielt anschließen eine Sounddatei ab.
Func start()
    
$y 1
    
    Hotkeyset
("{#}"'pause')
    While 
1
        
If $y 0 Then ExitLoop
        ProgressOn
("Mushroom""","100%")
                For 
$i 1 to 100 step 1
                    sleep
(350)
            
ProgressSet$i$i 100 " %")
                
Next
            ProgressSet
(100 "Ready""Another mushroom!")
                    
sleep(500)
            
ProgressOff()
            
$s SoundPlay(".\Schwammerl.mp3",1)
    
WEnd
EndFunc

;Durch diese Funktion wird der Cooldown angehalten!
Func pause()
        
$y 0
    Hotkeyset
("{#}"'start')
        While 
1
            sleep 
(100)
        
WEnd
EndFunc
    
;Beendet das Skript!
Func _exit()
Exit
EndFunc

;Damit das Skript nicht ausgeht!
while 
1
    Sleep
(100)
WEnd 

Ich hab auch schon ein nettes GUI erstellt:

PHP Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=c:\users\fabian\documents\au3\bot alpha 1.0\test 1.kxf
$Form1 GUICreate("Form1"224151249291BitOR($WS_MINIMIZEBOX,$WS_GROUP))
GUISetBkColor(0xFFFFFF)
$Progress1 GUICtrlCreateProgress(314016125)
$GUI_LABEL1 GUICtrlCreateLabel("Next mushroom in"31812529)
GUICtrlSetFont(-1124000"Papyrus")
GUICtrlSetColor(-10x000000)
$GUI_ANZAHL GUICtrlCreateLabel("35"15982429)
GUICtrlSetFont(-1128000"Papyrus")
GUICtrlSetColor(-10xFF0000)
$Pic1 GUICtrlCreatePic("C:\Users\Fabian\Documents\Au3\Bot Alpha 1.0\SCHWAMMERL_ICO.jpg"31724941)
$Pic2 GUICtrlCreatePic("C:\Users\Fabian\Documents\Au3\Bot Alpha 1.0\SCHWAMMERL_ICO.jpg"87724941)
$Pic3 GUICtrlCreatePic("C:\Users\Fabian\Documents\Au3\Bot Alpha 1.0\SCHWAMMERL_ICO.jpg"143724941)
$Checkbox1 GUICtrlCreateCheckbox("Sound On/Off"671208925)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit

        Case 
$GUI_LABEL1
    
EndSwitch
WEnd 



Nun meine Frage(n):

Kann man ein Label, wie zb.:
PHP Code:
$GUI_ANZAHL GUICtrlCreateLabel("35"15982429
so einrichten, dass es immer die jeweilige Sekunde der Progressbar anzeigt? Müsste doch eigentlich mit
PHP Code:
GUICtrlRead 
gehen oder?


Ist es möglich, Bilder einblenden zu lassen? dh. nach dem ersten Durchlauf der Zeit Bild 1 bzw.:
PHP Code:
$Pic1 GUICtrlCreatePic("C:\Users\Fabian\Documents\Au3\Bot Alpha 1.0\SCHWAMMERL_ICO.jpg"31724941
und so weiter und so fort(bis zu 3mal.) Und wenn die Taste (zb) X gedrückt wird, dann geschieht Y...


Danke an jeden, der sich die geschicht kurz durch den Kopf gehen lässt...
Wenn wer will, kann er auch gerne mein Script durschauen, testen und etwaige Schwachstellen aufdecken!




Grüße

Stoani
Elborod is offline  
Old 05/06/2011, 22:24   #5
 
omer36's Avatar
 
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,254
Ich würde eher zu Timern raten, da du durch die Sleep Funktion dein Script blockst und du "nebenbei" nichts machen kannst...

Ich habe mal das von mir in deine GUI eingefügt, und raus kam das:

PHP Code:
#Include <Misc.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Global $zeit 35$zae 1

#Region ### START Koda GUI section ### Form=c:\users\fabian\documents\au3\bot alpha 1.0\test 1.kxf
$Form1 GUICreate("Form1"224151249291BitOR($WS_MINIMIZEBOX,$WS_GROUP))
GUISetBkColor(0xFFFFFF)
$Progress1 GUICtrlCreateProgress(314016125)
$GUI_LABEL1 GUICtrlCreateLabel("Next mushroom in"31812529)
GUICtrlSetFont(-1124000"Papyrus")
GUICtrlSetColor(-10x000000)
$GUI_ANZAHL GUICtrlCreateLabel($zeit15982429)
GUICtrlSetFont(-1128000"Papyrus")
GUICtrlSetColor(-10xFF0000)
$Pic1 GUICtrlCreatePic("C:\Users\Fabian\Documents\Au3\Bot Alpha 1.0\SCHWAMMERL_ICO.jpg"31724941)
$Pic2 GUICtrlCreatePic("C:\Users\Fabian\Documents\Au3\Bot Alpha 1.0\SCHWAMMERL_ICO.jpg"87724941)
GUICtrlSetState($Pic2$GUI_HIDE)
$Pic3 GUICtrlCreatePic("C:\Users\Fabian\Documents\Au3\Bot Alpha 1.0\SCHWAMMERL_ICO.jpg"143724941)
GUICtrlSetState($Pic3$GUI_HIDE)
$Checkbox1 GUICtrlCreateCheckbox("Sound On/Off"671208925)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

start()

While 
1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit

        Case 
$GUI_LABEL1
    
EndSwitch
WEnd


Func start
()
Local $timer$zTimer$end 0

GUICtrlSetData
($Progress10)
$zeit 35

$timer 
TimerInit()
$zTimer TimerInit()
While 
Not _IsPressed("1B")
    If 
_IsPressed("BF"Then ExitLoop
    
If _IsPressed("58"Then ToolTip("X - Taste wurde gedrückt"00)
    For 
$i 0 To 100
        
If TimerDiff($timer) >= 35000/100 Then
            GUICtrlSetData
($Progress1GUICtrlRead($Progress1) + 1)
            
$timer TimerInit()
        EndIf
    
Next
    
If GUICtrlRead($Progress1) >= 100 Then
        $zae 
+= 1
        $end 
1
        ExitLoop
    
EndIf
    If 
TimerDiff($zTimer) >= 1000 Then
        $zeit 
-= 1
        GUICtrlSetData
($GUI_ANZAHL$zeit)
        
$zTimer TimerInit()
    EndIf
WEnd

If $zae 3 Then
    GUICtrlSetState
($Pic2$GUI_HIDE)
    
GUICtrlSetState($Pic3$GUI_HIDE)
    
$zae 1
EndIf

If 
$zae 2 Then GUICtrlSetState($Pic2$GUI_SHOW)
If 
$zae 3 Then GUICtrlSetState($Pic3$GUI_SHOW)

If 
_IsPressed("1B"Then Exit
If 
_IsPressed("BF"Then start()

If 
$end 1 Then
    MsgBox
("","""Zeit ist um"1)
    
start()
EndIf

EndFunc 
Ist es in etwa das, was du wolltest?
omer36 is offline  
Thanks
1 User
Old 05/07/2011, 12:05   #6
 
Elborod's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 74
Received Thanks: 3
Hey Omer!

While 1
Danke
Wend




Ja das schaut schon ziemlich gut aus!

Da mit den Timern muss ich dir tatsächlich recht geben. Diese Lösung ist um einiges eleganter als sleep(100) ;D
Das Problem ist, dass ich halt noch nie mit Timern gearbeitet habe( bin aber grad dabei) und grad nicht ganz versteh wieso der Timer das Skript total stopt... also nicht ganz genau das, was ich brauche. Wenn der Button X das Skript stoppt, sollte er beim zweiten Mal das Skript resetten und neu starten!
Kann man den eigentlich start() ohne func davor hinschreiben?

Ich habs noch ein bisserl verändert...

PHP Code:
#Include <Misc.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Global $zeit 35$zae 0

#Region ### START Koda GUI section ### Form=c:\users\fabian\documents\au3\bot alpha 1.0\test 1.kxf
$Form1 GUICreate("Form1"224151249291BitOR($WS_MINIMIZEBOX,$WS_GROUP))
GUISetBkColor(0xFFFFFF)
$Progress1 GUICtrlCreateProgress(314016125)
$GUI_LABEL1 GUICtrlCreateLabel("Next mushroom in"31812529)
GUICtrlSetFont(-1124000"Papyrus")
GUICtrlSetColor(-10x000000)
$GUI_ANZAHL GUICtrlCreateLabel($zeit15982429)
GUICtrlSetFont(-1128000"Papyrus")
GUICtrlSetColor(-10xFF0000)
$Pic1 GUICtrlCreatePic("C:\Users\Fabian\Documents\Au3\Bot Alpha 1.0\SCHWAMMERL_ICO.jpg"31724941)
GUICtrlSetState($Pic1$GUI_HIDE)
$Pic2 GUICtrlCreatePic("C:\Users\Fabian\Documents\Au3\Bot Alpha 1.0\SCHWAMMERL_ICO.jpg"87724941)
GUICtrlSetState($Pic2$GUI_HIDE)
$Pic3 GUICtrlCreatePic("C:\Users\Fabian\Documents\Au3\Bot Alpha 1.0\SCHWAMMERL_ICO.jpg"143724941)
GUICtrlSetState($Pic3$GUI_HIDE)
$Checkbox1 GUICtrlCreateCheckbox("Sound On/Off"671208925)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

start()

While 
1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit

        Case 
$GUI_LABEL1
    
EndSwitch
WEnd


Func start
()
Local $timer$zTimer$end 0

GUICtrlSetData
($Progress10)
$zeit 35

$timer 
TimerInit()
$zTimer TimerInit()
While 
Not _IsPressed("1B")
    If 
_IsPressed("79"Then ExitLoop
    
If _IsPressed("58"Then ToolTip("X - Taste wurde gedrückt"00)
    For 
$i 0 To 100
        
If TimerDiff($timer) >= 35000/100 Then
            GUICtrlSetData
($Progress1GUICtrlRead($Progress1) + 1)
            
$timer TimerInit()
        EndIf
    
Next
    
If GUICtrlRead($Progress1) >= 100 Then
        $zae 
+= 1
        $end 
1
        ExitLoop
    
EndIf
    If 
TimerDiff($zTimer) >= 1000 Then
        $zeit 
-= 1
        GUICtrlSetData
($GUI_ANZAHL$zeit)
        
$zTimer TimerInit()
    EndIf
WEnd

If $zae 3 Then
    GUICtrlSetState
($Pic1$GUI_HIDE)
    
GUICtrlSetState($Pic2$GUI_HIDE)
    
GUICtrlSetState($Pic3$GUI_HIDE)
    
$zae 0
EndIf
If 
$zae 1 Then GUICtrlSetState($Pic1$GUI_SHOW)
If 
$zae 2 Then GUICtrlSetState($Pic2$GUI_SHOW)
If 
$zae 3 Then GUICtrlSetState($Pic3$GUI_SHOW)

If 
_IsPressed("1B"Then Exit
If 
_IsPressed("79"Then start()

If 
$end 1 Then
    SoundPlay
(".\Schwammerl.mp3",1)
    
start()
EndIf

EndFunc 

Grüße
Stoani!
Elborod is offline  
Old 05/07/2011, 12:50   #7
 
omer36's Avatar
 
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,254
ahh seh erst jetz was du meinst...
Wenn man die # - Taste zu lange hält, stoppt es total oder beendet sich manchmal...

habs mal so gelöst:

If _IsPressed("BF") Then
Sleep(1000)
start()
EndIf

Da du in dem Fall den Script eh neustarten möchtest, hab ich eine Sleep von 1 sec eingebaut (um mehrmaliges drücken zu vermeiden) und dadurch müsste es normal funktionieren.
omer36 is offline  
Reply




All times are GMT +2. The time now is 07:01.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.