Hi Leute,
ich bastele gerade an einer kleinen GUI für ein Programm,
ich will dort ein Menü bestehend aus doppelt belegbaren Bildern haben.
Jedoch ist AutoIT in diesem Falle mal ausnahmsweise zu schnell und es klickt von dem Untermenü schon gleich den nächsten Eintrag an.
Es ist etwas schwierig zu erklären, am Besten probiert ihr es selber mit nur einem Bild aus.
Wie kann ich es verhindern, dass er kurz wartet bevor er Eingaben wieder erlaubt?
Mit Sleep habe ich es schon probiert, BlockInput wäre auch noch eine Möglichkeit aber das muss doch auch noch anders gehen.
Hoffentlich habt ihr eine Idee.
Mein Script:
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $SleepDelay = 1000
Global $DLSMode = 0
Global $Version = '01 Beta'
Global $Menu = 0
$ImagePath = @TempDir & "\"
FileInstall("D:\Extras\Programmieren\AUTOIT\kaesekaestchenbot\player1bot\Ikarus Launcher\Background.jpg",$ImagePath & "Background.jpg")
FileInstall("D:\Extras\Programmieren\AUTOIT\kaesekaestchenbot\player1bot\Ikarus Launcher\Bilder\Startup.jpg",$ImagePath & "Startup.jpg")
FileInstall("D:\Extras\Programmieren\AUTOIT\kaesekaestchenbot\player1bot\Ikarus Launcher\Bilder\Startover.jpg",$ImagePath & "Startover.jpg")
FileInstall("D:\Extras\Programmieren\AUTOIT\kaesekaestchenbot\player1bot\Ikarus Launcher\Bilder\Optionsup.jpg",$ImagePath & "Optionsup.jpg")
FileInstall("D:\Extras\Programmieren\AUTOIT\kaesekaestchenbot\player1bot\Ikarus Launcher\Bilder\Optionsover.jpg",$ImagePath & "Optionsover.jpg")
FileInstall("D:\Extras\Programmieren\AUTOIT\kaesekaestchenbot\player1bot\Ikarus Launcher\Bilder\Exitup.jpg",$ImagePath & "Exitup.jpg")
FileInstall("D:\Extras\Programmieren\AUTOIT\kaesekaestchenbot\player1bot\Ikarus Launcher\Bilder\Exitover.jpg",$ImagePath & "Exitover.jpg")
FileInstall("D:\Extras\Programmieren\AUTOIT\kaesekaestchenbot\player1bot\Ikarus Launcher\Bilder\untermenus\NormalModeup.jpg",$ImagePath & "NormalModeup.jpg")
FileInstall("D:\Extras\Programmieren\AUTOIT\kaesekaestchenbot\player1bot\Ikarus Launcher\Bilder\untermenus\NormalModeover.jpg",$ImagePath & "NormalModeover.jpg")
FileInstall("D:\Extras\Programmieren\AUTOIT\kaesekaestchenbot\player1bot\Ikarus Launcher\Bilder\untermenus\SilentModeup.jpg",$ImagePath & "SilentModeup.jpg")
FileInstall("D:\Extras\Programmieren\AUTOIT\kaesekaestchenbot\player1bot\Ikarus Launcher\Bilder\untermenus\SilentModeover.jpg",$ImagePath & "SilentModeover.jpg")
FileInstall("D:\Extras\Programmieren\AUTOIT\kaesekaestchenbot\player1bot\Ikarus Launcher\Bilder\Backover.jpg",$ImagePath & "Backover.jpg")
FileInstall("D:\Extras\Programmieren\AUTOIT\kaesekaestchenbot\player1bot\Ikarus Launcher\Bilder\Backup.jpg",$ImagePath & "Backup.jpg")
FileInstall("D:\Extras\Programmieren\AUTOIT\kaesekaestchenbot\player1bot\Ikarus Launcher\Bilder\untermenus\DLSOptionsover.jpg",$ImagePath & "DLSOptionsover.jpg")
FileInstall("D:\Extras\Programmieren\AUTOIT\kaesekaestchenbot\player1bot\Ikarus Launcher\Bilder\untermenus\DLSOptionsup.jpg",$ImagePath & "DLSOptionsup.jpg")
FileInstall("D:\Extras\Programmieren\AUTOIT\kaesekaestchenbot\player1bot\Ikarus Launcher\Bilder\untermenus\SleepDelayover.jpg",$ImagePath & "SleepDelayover.jpg")
FileInstall("D:\Extras\Programmieren\AUTOIT\kaesekaestchenbot\player1bot\Ikarus Launcher\Bilder\untermenus\SleepDelayup.jpg",$ImagePath & "SleepDelayup.jpg")
$Form1 = GUICreate("Ikarus Launcher", 506, 318, 192, 124)
$Pic1 = GUICtrlCreatePic($ImagePath & "Background.jpg", -7, 22, 512, 294)
$Pic2 = GUICtrlCreatePic($ImagePath & "Startup.jpg", 0, 0, 138, 22)
$Pic3 = GUICtrlCreatePic($ImagePath & "Optionsup.jpg", 139, 0, 138, 22)
$Pic4 = GUICtrlCreatePic($ImagePath & "Exitup.jpg", 278, 0, 138, 22)
$Label1 = GUICtrlCreateLabel(" V. "&$Version, 416, 0, 79, 20)
GUICtrlSetFont(-1, 0, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_MOUSEMOVE
_Check_Hover()
Case $Label1
MsgBox(0,"Info","Ikarus v. "&$Version& " © 2013 Fliwatt" & @CRLF & "xxxxxxx@gmail.com")
Case $Pic2
If $Menu = 0 Then
GUICtrlSetImage($Pic2,$ImagePath & "NormalModeup.jpg")
GUICtrlSetImage($Pic3,$ImagePath & "SilentModeup.jpg")
GUICtrlSetImage($Pic4,$ImagePath & "Backup.jpg")
$Menu = 1
sleep(500)
Endif
If $Menu = 1 Then
MsgBox(0,"","")
Endif
Case $Pic3
If $Menu = 0 Then
GUICtrlSetImage($Pic2,$ImagePath & "DLSOptionsup.jpg")
GUICtrlSetImage($Pic3,$ImagePath & "SleepDelayup.jpg")
GUICtrlSetImage($Pic4,$ImagePath & "Backup.jpg")
$Menu = 2
sleep(500)
Endif
If $Menu = 1 Then
MsgBox(0,"","")
Exit
Endif
Case $Pic4
If $Menu = 0 Then Exit
If $Menu = 1 or $Menu = 2 Then
GUICtrlSetImage($Pic2,$ImagePath & "Startup.jpg")
GUICtrlSetImage($Pic3,$ImagePath & "Optionsup.jpg")
GUICtrlSetImage($Pic4,$ImagePath & "Exitup.jpg")
$Menu = 0
sleep(500)
Endif
EndSwitch
WEnd
Func _Check_Hover()
Static $Hovered = False
Local $aCursorInfo = GUIGetCursorInfo()
If $Hovered And $Hovered <> $aCursorInfo[4] Then
Switch $Hovered
Case $Pic2
If $Menu = 0 Then GUICtrlSetImage($Pic2,$ImagePath & "Startup.jpg")
If $Menu = 1 Then GUICtrlSetImage($Pic2,$ImagePath & "NormalModeup.jpg")
If $Menu = 2 Then GUICtrlSetImage($Pic2,$ImagePath & "DLSOptionsup.jpg")
Case $Pic3
If $Menu = 0 Then GUICtrlSetImage($Pic3,$ImagePath & "Optionsup.jpg")
If $Menu = 1 Then GUICtrlSetImage($Pic3,$ImagePath & "SilentModeup.jpg")
If $Menu = 2 Then GUICtrlSetImage($Pic3,$ImagePath & "SleepDelayup.jpg")
Case $Pic4
If $Menu = 0 Then GUICtrlSetImage($Pic4,$ImagePath & "Exitup.jpg")
If $Menu = 1 or $Menu = 2 Then GUICtrlSetImage($Pic4,$ImagePath & "Backup.jpg")
EndSwitch
$Hovered = False
EndIf
If Not $Hovered Then
Switch $aCursorInfo[4]
Case $Pic2
If $Menu = 0 Then GUICtrlSetImage($Pic2,$ImagePath & "Startover.jpg")
If $Menu = 1 Then GUICtrlSetImage($Pic2,$ImagePath & "NormalModeover.jpg")
If $Menu = 2 Then GUICtrlSetImage($Pic2,$ImagePath & "DLSOptionsover.jpg")
$Hovered = $Pic2
Case $Pic3
If $Menu = 0 Then GUICtrlSetImage($Pic3,$ImagePath & "Optionsover.jpg")
If $Menu = 1 Then GUICtrlSetImage($Pic3,$ImagePath & "SilentModeover.jpg")
If $Menu = 2 Then GUICtrlSetImage($Pic3,$ImagePath & "SleepDelayover.jpg")
$Hovered = $Pic3
Case $Pic4
If $Menu = 0 Then GUICtrlSetImage($Pic4,$ImagePath & "Exitover.jpg")
If $Menu = 1 or $Menu = 2 Then GUICtrlSetImage($Pic4,$ImagePath & "Backover.jpg")
$Hovered = $Pic4
EndSwitch
EndIf
EndFunc
Fliwatt