Hab ich jetzt gerade getahn. ![]()
Beispiel ist auch dabei.
Wünsch euch viel Spaß beim testen!
Hab ich jetzt gerade getahn. ![]()
Beispiel ist auch dabei.
Wünsch euch viel Spaß beim testen!
Ich stell sie rein, wenn sie ganz fertig ist.
Derweil such ich einfach nur Tester, die mir bei der Fehlersuche helfen.
Ausgehend von diesem Thread, kam mir die Idee, ein altes GDI+ Beispiel von mir zu einer UDF zu machen.
Beschreibung:
Als erstes wird ein Fenster erstellt, welches in der Mitte transparent ist.
In diesem Fenster wird der Rahmen gezeichnet, welchen man mit beliebigen Farben gestalten kann.
Danach wird ein Fenster inmitten des transparenten Bereich des ersten Fensters erstellt, welches dann wie eine normale GUI verwendet werden kann.
Eine Demonstration ist in der UDF drinnen.
Einfach in Zeile 30 $testmode auf True setzten.
Version 1.10.00
#include <OwnStyle.au3>
[/autoit] [autoit][/autoit] [autoit]Global $hwnd1, $hwnd2, $button
[/autoit] [autoit][/autoit] [autoit]_OwnStyle_StartUp()
[/autoit] [autoit][/autoit] [autoit]$hwnd1 = _OwnStyle_GUICreate("OwnStyle Example1", 300, 500, 100, 100)
GUICtrlCreateButton("OwnStyle Example", 25, 100, 250, 30)
_OwnStyle_GUISetColour($hwnd1, 1, 0xFFFFFFFF, 0xFF000000, 0xFF000000)
_OwnStyle_GUISetColour($hwnd1, 2, 0xFFFFFFFF, 0xFFFFFFFF)
_OwnStyle_GUISetColour($hwnd1, 3, 0xFFFF9900, 0xFFFF0000)
_OwnStyle_GUISetColour($hwnd1, 4, 0xFFFF0000, 0xFFFF00FF, 0xFF000000)
_OwnStyle_GUISetTitle($hwnd1, "OwnStyle Example Changed")
_OwnStyle_GUISetColour($hwnd1, 5, 0xFFFFFFFF, 0xFF000000, 0xFF000000)
_OwnStyle_GUISetColour($hwnd1, 9, 0xFFFFFFFF, 0xFF000000, 0xFF888888)
_OwnStyle_GUISetColour($hwnd1, 10, 0xFF000000, 0xFFFFFFFF, 0xFF888888)
_OwnStyle_GUISetFunctions($hwnd1, "_Close")
_OwnStyle_GUISetState()
$hwnd2 = _OwnStyle_GUICreate("OwnStyle Example2", 500, 300, 700, 100)
GUICtrlCreateLabel("OwnStyle Example", 25, 100)
_OwnStyle_GUISetState()
While 1
Sleep(100)
WEnd
Func _Close()
_OwnStyle_ShutDown()
Exit
EndFunc
_OwnStyle_StartUp
_OwnStyle_ShutDown
_OwnStyle_GUICreate
_OwnStyle_GUIDelete
_OwnStyle_GUISetState
_OwnStyle_GUISetTitle
_OwnStyle_GUISetColour
_OwnStyle_GUISetFunctions
_OwnStyle_GUIMove
Hover Funktion schreiben
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
_OwnStyle_SetColour für die Hoverfunktionen erweitern
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
_OwnStyle_SetColour für die Inaktivität erweitern
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
_OwnStyle_GUIMove schreiben und testen
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
_OwnStyle_GUICtrlCreate schreiben und testen
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 0%
Funktionen umbenennen
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
Wenn man in der Taskleiste bei aktivem Fenster auf den Task des Fensters klickt, wird dieses nur inaktiv aber nicht minimiert
Version 1.10.00
Version 1.00.00
Ich hoffe, dass sich ein paar Tester, die mir bei der Bugsuche behilflich sein wollen, finden werden.
Achtung!:
Die UDF funktioniert nur im OnEventMode (wird beim StartUp automatisch initialisiert)!
Würde mich über Kritik und Anregungen freuen. ![]()
MfG,
H2112
Ich wurde heute aufgeweckt und mir wurde mitgeteilt, dass der Freund von meiner Schwester mit meinem !NEUEN MOPED! einen Unfall hatte. Natürlich renn ich sofort in die Garage, und was muss ich erblicken: Meine ganze Familie die APRIL APRIL schreit. xD
Du kannst das ganze mit GDI+ machen, ich häng dir in ein paar Min, ein Beispiel an, wenn ich meine Festplatte wiederhabe. ![]()
Tja, da ich sie vor morgen nicht wiederbekommen werde hier ein Beispiel im Forum: https://autoit.de/index.php?page=Thread&threadID=18810
Ein kleiner Tipp:
Setzt die ganzen Codeblöcke in nen Spoiler.
Schreib einfach [ spoiler ] Und um den Spoiler zu schließen [ /spoiler]
Beispiel:
; Tada
[/autoit]Danke das hat mein Problem erledigt.
GELÖST!
Kanns mir jetzt grad nicht anschaun, freu mich aber schon drauf. ![]()
Es wär gut, wenn man Ellipsen (Kreise bei gedrückter Strg-Taste), Rechtecke (Quadrate bei gedrückter Strg-Taste), Polygone, usw, zeichnen könnte.
Danke für die Antwort, hat aber das Problem bei mir nicht gelöst. ![]()
Soblad man auf den Button klickt, verliert die GUI den Focus wieder.
Also einen Spoiler machst du so [ spoiler ] und schließt ihn mit [ /spoiler ] (Leerzeichen weg).
Das sieht dann so aus:
;Spoiler Test
[/autoit]Ein Codeblock ist der Code den du eingefügt hast.
Hier, bitte:
Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$hGUI = GUICreate("Test", 500, 500, -1, -1)
GUISetOnEvent(-3, "_Close")
GUIRegisterMsg(0x0007, "_WM_SetFocus")
GUIRegisterMsg(0x0008, "_WM_KillFocus")
; GUIRegisterMsg(0x0003, "_WM_Move")
; GUIRegisterMsg(0x0201, "_WM_LButtonDown")
; GUIRegisterMsg(0x0200, "_WM_MouseMove")
GUICtrlCreateButton("Test", 100, 100, 100, 20)
GUISetState()
While 1
Sleep(100)
WEnd
Func _Close()
Exit
EndFunc
Func _WM_SetFocus($hwnd, $message, $wParam, $lParam)
ToolTip("Die GUI hat den Focus")
EndFunc
Func _WM_KillFocus($hwnd, $message, $wParam, $lParam)
ToolTip("Die GUI hat den Focus verloren")
EndFunc
Func _WM_Move($hwnd, $message, $wParam, $lParam)
ToolTip("Die Position des Fenster wurde geändert")
EndFunc
Func _WM_LButtonDown($hwnd, $message, $wParam, $lParam)
Local $Split = StringSplit($lParam, "")
Local $x = Dec($split[7] & $split[8] & $split[9] & $split[10])
Local $y = Dec($split[3] & $split[4] & $split[5] & $split[6])
ToolTip("Die linke Maustaste wurde gedrückt" & @CRLF & "xPos: " & $x & @CRLF & "yPos: " & $y)
EndFunc
Func _WM_MouseMove($hwnd, $message, $wParam, $lParam)
Local $Split = StringSplit($lParam, "")
Local $x = Dec($split[7] & $split[8] & $split[9] & $split[10])
Local $y = Dec($split[3] & $split[4] & $split[5] & $split[6])
ToolTip("Der Cursor ist innerhalb des Fensters" & @CRLF & "xPos: " & $x & @CRLF & "yPos: " & $y)
EndFunc
Ich hab ein bischen mit WM_SETFOCUS und WM_KILLFOCUS rungespielt, und mir ist aufgefallen, dass, wenn in der GUI ein Controle ist, immer WM_KILLFOCUS aufgerufen wird.
Nun zu meiner Frage:
Gibt es eine Möglichkeit, diesen Fehler zu unterbinden?
GELÖST!
In Post 6 steht die Lösung.
Danke.
Ich auch nicht, war ja auch nur so ein langeweile Skript. ![]()
Ich hatte mal wieder Langeweile (Ja kommt ziehmlich häufig vor ;)).
Dann hatte ich halt eine Idee, und aus der Idee wurde eine UDF.
Ohne viele Worte:
; MouseChaser, by h2112
#include <GDIPlus.au3>
#include-once
Local $ScreenDc, $dc, $tSize, $pSize, $tSource, $pSource, $tBlend, $pBlend, $tPoint, $pPoint ; Alles, was für die transparente GUI gebracht wird
Local $brush[2], $pen, $hEndCap
Local $hWnd, $hGraphic, $hBitmap, $backbuffer, $matrix
Local $MouseChaser = 0 ; Nummer oder Name der Funktion, die einen Mausverfolger zeichnet
Local $rotationSpeed = 5 ; Geschwindigkeit, der zu drehenden Matrix
Local $ChaserColour = 0xFF000000 ; Farbe des Mausverfolgers
Local $ChaserWidth = 50 ; Breite des Fensters
Local $ChaserHeight = 50 ; Höhe des Fensters
Local $testmode = False ; Wenn der Testmodes auf True ist, zeigt das Script alle vordefinierten Mausverfolger.
[/autoit] [autoit][/autoit] [autoit]If $testmode Then
_MouseChaser_StartUp()
_MouseChaser_SetRotationSpeed(4)
_MouseChaser_SetPos(75, 75)
While 1
_MouseChaser_SetChaserColour("0xFF" & String(Hex(Random(1, 255), 2)) & String(Hex(Random(1, 255), 2)) & String(Hex(Random(1, 255), 2)))
_MouseChaser_SetOwnChaser("_testmode")
For $i = 2 To 4
Sleep(5000)
_MouseChaser_SetChaser($i)
_MouseChaser_SetChaserColour("0xFF" & String(Hex(Random(1, 255), 2)) & String(Hex(Random(1, 255), 2)) & String(Hex(Random(1, 255), 2)))
Next
Sleep(5000)
WEnd
EndIf
#cs
_MouseChaser_StartUp()
Initialisiert die UDF.
#ce
Func _MouseChaser_StartUp()
Local $MousePos = MouseGetPos()
_GDIPlus_Startup()
$hWnd = GUICreate("Mausverfolger", $ChaserWidth, $ChaserHeight, $MousePos[0], $MousePos[1], 0x80000000, BitOR(0x00000080, 0x00080000, 0x00000008))
GUISetState()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
$hBitmap = _GDIPlus_BitmapCreateFromGraphics($ChaserWidth, $ChaserHeight, $hGraphic)
$backbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsSetSmoothingMode($backbuffer, 4)
$matrix = _GDIPlus_MatrixCreate()
_GDIPlus_MatrixTranslate($matrix, $ChaserWidth / 2, $ChaserHeight / 2)
_GDIPlus_GraphicsSetTransform($backbuffer, $matrix)
$brush[0] = _GDIPlus_BrushCreateLinear(-$ChaserWidth / 2, -$ChaserHeight / 2, $ChaserWidth / 2, $ChaserHeight / 2, $ChaserColour, 0x00000000)
$brush[1] = _GDIPlus_BrushCreateSolid(0xFF000000)
$pen = _GDIPlus_PenCreate($ChaserColour, 10)
$hEndCap = _GDIPlus_ArrowCapCreate(1.5, 1.5)
_GDIPlus_PenSetCustomEndCap($pen, $hEndCap)
$ScreenDc = _WinAPI_GetDC($hWnd)
$dc = _WinAPI_CreateCompatibleDC($ScreenDc)
$tSize = DllStructCreate($tagSIZE)
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", $ChaserWidth)
DllStructSetData($tSize, "Y", $ChaserHeight)
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha", 255)
DllStructSetData($tBlend, "Format", 1)
$tPoint = DllStructCreate($tagPOINT)
$pPoint = DllStructGetPtr($tPoint)
DllStructSetData($tPoint, "X", 0)
DllStructSetData($tPoint, "Y", 0)
AdlibRegister("_MouseChaser_Chase", 10)
AdlibRegister("_MouseChaser_Rotate", 10)
If $testmode Then
$MouseChaser = "_testmode"
HotKeySet("{ESC}", "_MouseChaser_ShutDown")
EndIf
EndFunc ;==>_MouseChaser_StartUp
#cs
_MouseChaser_ShutDown()
Beendet die UDF.
#ce
Func _MouseChaser_ShutDown()
GUIDelete($hWnd)
AdlibUnRegister("_MouseChaser_Chase")
AdlibUnRegister("_MouseChaser_Rotate")
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_GraphicsDispose($backbuffer)
_GDIPlus_MatrixDispose($matrix)
_GDIPlus_BrushDispose($brush)
_GDIPlus_PenDispose($pen)
_WinAPI_ReleaseDC($hWnd, $dc)
_WinAPI_ReleaseDC($hWnd, $ScreenDc)
_GDIPlus_Shutdown()
If $testmode Then Exit
EndFunc ;==>_MouseChaser_ShutDown
#cs
_MouseChaser_SetPos($ChaserWidth, $ChaserHeight)
$ChaserWidth = Breite des Fensters
$ChaserHeight = Höhe des Fensters
Ändert die Breite und Höhe des Fensters.
Achtung: Alle Handles werden geändert!
#ce
Func _MouseChaser_SetPos($Width, $Height)
Local $oldtestmode = $testmode
If $testmode Then $testmode = False
$ChaserWidth = $Width
$ChaserHeight = $Height
_MouseChaser_ShutDown()
If $oldtestmode Then $testmode = True
_MouseChaser_StartUp()
EndFunc ;==>_MouseChaser_SetPos
#cs
_MouseChaser_SetChaser($chaser)
$chaser = Nummer, die einen vordefinierten Mausverfolger aufruft
Setzt einen vordefinierten Mausverfolger.
#ce
Func _MouseChaser_SetChaser($Chaser)
If IsNumber($Chaser) Then
$MouseChaser = $Chaser
Return True
Else
Return False
EndIf
EndFunc ;==>_MouseChaser_SetChaser
#cs
_MouseChaser_SetOwnChaser($Chaser)
$Chaser = String, der den Namen der aufzurufenden Funktion enthält
Setzt eine eigene Funktion für den Mausverfolger.
#ce
Func _MouseChaser_SetOwnChaser($Chaser)
If IsString($Chaser) Then
$MouseChaser = $Chaser
Return True
Else
Return False
EndIf
EndFunc ;==>_MouseChaser_SetOwnChaser
#cs
_MouseChaser_SetRotationSpeed($speed)
$speed = Rotationsgeschwindigkeit
Setzt die Rotationsgeschwindigkeit.
#ce
Func _MouseChaser_SetRotationSpeed($speed = 5)
$rotationSpeed = $speed
Return
EndFunc ;==>_MouseChaser_SetRotationSpeed
#cs
_MouseChaser_SetChaserColour($Colour)
$Colour = HEX-Code der Farbe mit Alphachannel
Setzt die Farbe des Mausverfolgers.
#ce
Func _MouseChaser_SetChaserColour($Colour)
$ChaserColour = $Colour
_GDIPlus_BrushDispose($brush)
$brush[0] = _GDIPlus_BrushCreateLinear(-$ChaserWidth / 2, -$ChaserHeight / 2, $ChaserWidth / 2, $ChaserHeight / 2, $ChaserColour, 0x00000000)
_GDIPlus_BrushSetSolidColor($brush[1], $ChaserColour)
_GDIPlus_PenSetColor($pen, $ChaserColour)
EndFunc ;==>_MouseChaser_SetChaserColour
#cs
_MouseChaser_GetPos()
Gibt die Breite und Höhe in einem Array zurück.
$pos[0] = $ChaserWidth
$pos[1] = $ChaserHeight
#ce
Func _MouseChaser_GetPos()
Local $pos[2]
$pos[0] = $ChaserWidth
$pos[1] = $ChaserHeight
Return $pos
EndFunc ;==>_MouseChaser_GetPos
#cs
_MouseChaser_GetChaser()
Gibt den aktuellen Mausverfolger zurück.
Dieser kann eine Nummer, oder ein String sein.
#ce
Func _MouseChaser_GetChaser()
Return $MouseChaser
EndFunc ;==>_MouseChaser_GetChaser
#cs
_MouseChaser_GetHandles()
Gibt alle verwendeten Handles in einem Array zurück.
$ret[0] = $hWnd
$ret[1] = $hGraphic
$ret[2] = $hBitmap
$ret[3] = $backbuffer
$ret[4] = $matrix
#ce
Func _MouseChaser_GetHandles()
Local $ret[5]
$ret[0] = $hWnd
$ret[1] = $hGraphic
$ret[2] = $hBitmap
$ret[3] = $backbuffer
$ret[4] = $matrix
Return $ret
EndFunc ;==>_MouseChaser_GetHandles
Func _testmode()
$handles = _MouseChaser_GetHandles()
_GDIPlus_GraphicsFillEllipse($handles[3], -24, -24, 48, 48, $brush[0])
EndFunc ;==>_testmode
Func _MouseChaser_Chase()
Local $MousePos = MouseGetPos()
WinMove($hWnd, "", $MousePos[0], $MousePos[1])
EndFunc ;==>_MouseChaser_Chase
Func _MouseChaser_RedrawWindow()
_GDIPlus_GraphicsClear($backbuffer, 0x00000000)
_MouseChaser_DrawChaser()
Local $gdibitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
_WinAPI_SelectObject($dc, $gdibitmap)
_WinAPI_UpdateLayeredWindow($hWnd, $ScreenDc, 0, $pSize, $dc, $pSource, 0, $pBlend, 2)
_WinAPI_DeleteObject($gdibitmap)
EndFunc ;==>_MouseChaser_RedrawWindow
Func _MouseChaser_Rotate()
_GDIPlus_MatrixRotate($matrix, $rotationSpeed)
_GDIPlus_GraphicsSetTransform($backbuffer, $matrix)
_MouseChaser_RedrawWindow()
EndFunc ;==>_MouseChaser_Rotate
Func _MouseChaser_DrawChaser()
Select
Case $MouseChaser = 1
_GDIPlus_GraphicsClear($backbuffer, 0x00000000)
Case $MouseChaser = 2
_GDIPlus_GraphicsDrawArc($backbuffer, -20, -20, 39, 39, 0, 170, $pen)
Case $MouseChaser = 3
_GDIPlus_GraphicsFillEllipse($backbuffer, -19, -19, 10, 10, $brush[1])
Case $MouseChaser = 4
_GDIPlus_GraphicsFillPie($backbuffer, -25, -25, 50, 50, 0, 30, $brush[1])
Case Else
If IsString($MouseChaser) Then Call($MouseChaser)
EndSelect
EndFunc ;==>_MouseChaser_DrawChaser
Func _GDIPlus_BrushCreateLinear($iX1, $iY1, $iX2, $iY2, $iARGB1 = 0xFF000000, $iARGB2 = 0xFFFFFFFF)
Local $aResult, $start, $end, $sPoint, $ePoint
$start = DllStructCreate("int X;int Y")
DllStructSetData($start, "X", $iX1)
DllStructSetData($start, "Y", $iY1)
$sPoint = DllStructGetPtr($start)
$end = DllStructCreate("int X;int Y")
DllStructSetData($end, "X", $iX2)
DllStructSetData($end, "Y", $iY2)
$ePoint = DllStructGetPtr($end)
$aResult = DllCall($ghGDIPDll, "int", "GdipCreateLineBrushI", "ptr", $sPoint, "ptr", $ePoint, "int", $iARGB1, "int", $iARGB2, "int", 0, "int*", 0)
If @error Then Return SetError(@error, @extended, 0)
Return SetError(0, $aResult[0], $aResult[6])
EndFunc ;==>_GDIPlus_BrushCreateLinear
Ein Beispiel ist in der UDF drinnen, einfach mal in Zeile 16 $testmode auf True setzen.
Ich bin für Kritik und Verbesserungsvorschläge offen.
Da fehlen ja die Includes. ![]()
Setzt den Code mal mit [ autoit ] & [ /autoit ]. Wäre übersichtlicher.
Überhaupt erstellst du die 2. GUI erst nach der If Abfrage, das solltest du nicht tun.
#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit];Der Loader
#Region ### START Koda GUI section ### Form=c:\users\jonathan verbeek\desktop\autoit\installer\loader.kxf
$Loader = GUICreate("Loading...", 338, 178, 193, 125)
$Pic1 = GUICtrlCreatePic("C:\Users\Jonathan Verbeek\Desktop\AutoIt\Installer\load_background.jpg", 0, 0, 337, 177, 0)
$Progress1 = GUICtrlCreateProgress(0, 152, 337, 25)
GUICtrlSetData(-1, 0)
GUICtrlSetData(-1, 10)
GUICtrlSetData(-1, 50)
GUICtrlSetData(-1, 90)
GUICtrlSetData(-1, 100)
GUISetState(@SW_HIDE)
GUISetState(@SW_ENABLE)
#EndRegion ###
;Hauptprogramm
#Region ### START Koda GUI section ### Form=C:\\Benutzer\Jonathan Verbeek\Desktop\AutoIT\Installer\installerpackager.kxf
$JVIP = GUICreate("JV Installer Packager -", 992, 626, 6, 65)
$Pic1 = GUICtrlCreatePic("C:\Users\Jonathan Verbeek\Desktop\AutoIt\Installer\background.jpg", 0, 0, 1017, 713, 0)
$Label1 = GUICtrlCreateLabel("Step 1 - Load Files ", 40, 48, 138, 20)
GUICtrlSetFont(-1, 10, 800, 6, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x434E54)
$ListView1 = GUICtrlCreateListView("Filename|Path", 104, 88, 289, 225)
GUICtrlSendMsg(-1, 0x101E, 0, 60)
GUICtrlSendMsg(-1, 0x101E, 1, 200)
$ListView1_0 = GUICtrlCreateListViewItem("", $ListView1)
GUICtrlSetTip(-1, "Click the Button, to add Items.")
$Button1 = GUICtrlCreateButton("Load Files", 176, 320, 113, 25, 0)
$Label2 = GUICtrlCreateLabel("Step 2 - Settings ", 432, 248, 121, 20)
GUICtrlSetFont(-1, 10, 800, 6, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x434E54)
$Checkbox1 = GUICtrlCreateCheckbox("If ready, then run", 488, 280, 121, 17, 0)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x434E54)
$Checkbox2 = GUICtrlCreateCheckbox("Write Log, if ready", 488, 304, 129, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x434E54)
$Checkbox3 = GUICtrlCreateCheckbox("Close Packager, if ready", 488, 328, 161, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x434E54)
$Label3 = GUICtrlCreateLabel(".exe Path:", 488, 368, 72, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x434E54)
$Input1 = GUICtrlCreateInput("", 568, 368, 225, 21)
$Button2 = GUICtrlCreateButton("...", 800, 368, 25, 25, 0)
$Label4 = GUICtrlCreateLabel("Step 3 - Start! ", 688, 496, 101, 20)
GUICtrlSetFont(-1, 10, 800, 6, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x434E54)
$Progress1 = GUICtrlCreateProgress(688, 520, 273, 25)
$Button3 = GUICtrlCreateButton("Start!", 872, 560, 81, 25, 0)
$Menu1 = GUICtrlCreateMenu("File")
$MenuItem1c = GUICtrlCreateMenuItem("New Project", $Menu1)
$MenuItem2c = GUICtrlCreateMenuItem("Open", $Menu1)
$MenuItem3c = GUICtrlCreateMenuItem("Save as", $Menu1)
$MenuItem4c = GUICtrlCreateMenuItem("Close", $Menu1)
$Menu2 = GUICtrlCreateMenu("?")
$MenuItem1b = GUICtrlCreateMenuItem("Help", $Menu2)
$MenuItem2b = GUICtrlCreateMenuItem("About JVIP", $Menu2)
GUISetState(@SW_HIDE)
#EndRegion ### END Koda GUI section ###
$Answer = MsgBox(4,"Starten","Hauptprogramm starten?")
[/autoit] [autoit][/autoit] [autoit]If $Answer = 6 Then
GUISetState(@SW_HIDE, $Loader)
GUISetState(@SW_SHOW, $JVIP)
Else
MsgBox(0,"OK","OK, Tschüss!")
GUISetState(@SW_HIDE, $JVIP)
Exit
EndIf
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
_additems()
Case $Button2
_outputfile()
Case $Button3
_startpckg()
Case $Progress1
_progress()
Case $MenuItem1c
_newprj()
Case $MenuItem2c
_open()
Case $MenuItem3c
_saveas()
Case $MenuItem4c
_cls()
Case $MenuItem1b
_help()
Case $MenuItem2b
_abt()
EndSwitch
WEnd
Func _additems()
$File = FileOpenDialog("Load Files...", @ScriptDir ,"All Files (*.*)")
EndFunc
Func _outputfile()
$Output = FileSaveDialog("Set Output File...", @ScriptDir ,"Execute Files (*.exe)")
EndFunc
Zum verstehn schon, aber praktisch ist seine Version besser, weil ich es ja nur so als Beispiel geschrieben habe. ![]()
Also:
Du erstellst am Anfang vom Script beide GUIs hintereinander, und versteckst sie mit
GUISetState(@SW_Hide)
[/autoit]
Dann kannst du in der If Abfrage die GUI ganz einfach mit
GUISetState(@SW_Show, $gui)
[/autoit]wieder erscheinen lassen.
Beispiel:
[autoit]
$gui1 = GUICreate("GUI 1", 100, 100)
GUiSetState(@SW_Hide)
$gui2 = GUICreate("GUI 2", 100, 100)
GUISetState(@SW_Hide)
If MsgBox(4,"Starten?","Wollen sie das Hauptprogramm starten?") = 6 Then
GUISetState(@SW_Show, $gui1)
GUISetState(@SW_Show, $gui2)
Else
GUISetState(@SW_Show, $gui1)
EndIf
Hab den Code jetzt nicht getestet, müsste aber gehen.
Oha, Fehler von mir.
Hatte das total vergessen.
Danke für den Hinweiß. ![]()
Versuchs mal mit
[autoit]GUICtrlGetState()
[/autoit]Edit:
[autoit]#include <GUIConstantsEx.au3>
[/autoit][autoit][/autoit][autoit]If BitAnd(GUICtrlGetState($Checkbox1), $GUI_CHECKED) Then
MsgBox(0, "Meldung", "DieCheckbox wurde aktiviert")
EndIf