Hallo Leute,
da ich in letzter Zeit meiner Meinung nach viel zu viele Threads sehe, wie mache ich ein Skript mit mehreren GUI's, und und und. Deswegen mache ich jetzt einen Thread über GUI's in AutoIt.
~~~~~~~Anfang~~~~~~~
Was ist ein GUI?
Eine GUI, grafische Benutzeroberfläche (engl. „Graphical User Interface“) ist eine Software-Komponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt.
Das sagt Wikipedia, ich denke da gibt es nicht mehre viel hinzuzufügen.
Wie erstelle ich ein GUI in AutoIt?
Als aller erstes wird für das Erstellen von GUI's der Koda Form Designer empfohlen.
Syntax:
[autoit]GUICreate ( "title" [, width [, height [, left [, top [, style [, exStyle [, parent]]]]]]] )
[/autoit]Details
width - [optional] Die Breite des Fensters
height - [optional] Die Höhe des Fensters
left - [optional] Die linke Seite der Dialogbox. Standardmäßig (Wert -1) wird das Fenster zentriert. Wenn left angegeben wird, muss auch top angegeben werden
top - [optional] Die Oberkante der Dialogbox. Standardmäßig (Wert -1) wird das Fenster zentriert
style - [optional] Definiert den Fenster-Stil. Siehe Anhang GUI-Stile für Controls.
Verwende -1 für den Standard-Stil, der eine Kombination aus
$WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU Stil ist.
Einige Stile werden immer mit einbezogen: $WS_CLIPSIBLINGS, und $WS_SYSMENU wenn $WS_MAXIMIZEBOX oder $WS_SIZEBOX verwendet werden
exStyle - [optional] Definiert den erweiterten Stil des Fensters. Siehe die Tabelle der erweiterten Stile weiter unten. -1 ist der Standardwert
parent - [optional] Das Handle eines anderen, zuvor erstellten Fensters - dieses neue Fenster wird ein Child dieses Parent-Fensters
Wie wir sehen, brauchen wir für ein Beispiel GUI nur den Titel, denn der Rest ist optional.
Hier ein GUI ohne Funktion, es kann nur über die Startleiste beendet werden:
Beispiel GUI
$GUI = GUICreate("Beispiel GUI") ;Diese Funktion erstellt ein GUI-Fenster
GUISetState(@SW_SHOW, $GUI) ;Diese Funktion kann auch ohne Parameter angegeben werden, sie dient dazu das GUI-Fenster sichtbar zu machen
While 1 ;Diese Schleife dient dazu, dass das GUI-Fenster unendlich lang offen bleibt, bis es vom Benutzer geschlossen wird. (Endlosschleife)
Sleep(100) ;Diese Funktion bewirkt das das GUI immer wieder 100 Millisekunden wartet, da es eine Endlosschleife ist wartet das GUI unendlich lang, bis es vom Benutzer geschlossen wird.
WEnd ;Diese Schleife schließt die Endlosschleife
GUISetState dient dazu, das GUI-Fenster sichtbar zu machen. Syntax:
[autoit]GUISetState ( [flag [, winhandle]] )
[/autoit]Details
flag - [optional] @SW_SHOW = Zeige ein vorher verstecktes Fenster an (Standard)
@SW_HIDE = Verstecke das Fenster
@SW_MINIMIZE = Minimiere das Fenster
@SW_MAXIMIZE = Maximiere das Fenster
@SW_RESTORE = Stelle das Fenster wieder her
@SW_DISABLE = Deaktiviere das Fenster
@SW_ENABLE = Aktiviere das Fenster
@SW_LOCK = Sperre das Fenster, um Veränderungen zu verhindern
@SW_UNLOCK = Gib das Fenster wieder frei, damit es wieder verändert werden kann
winhandle - [optional] Fenster-Handle, wie von GUICreate zurückgegeben (voreingestellt ist das zuvor verwendete Fenster)
GUIOnEventMode
Der GUIOnEvent-Modus ist eine der Möglichkeiten zu Interaktion. Er ist oft vorteilhafter als der andere GUIGetMsg-Modus, weil er sich einfacher bedienen lässt. Syntax:
[autoit]Opt("GUIOnEventMode", 1) ;Dieser Befehl kommt an den Skriptanfang, um den GUIGetMsg-Modus komplett für das Skript auszuschalten
[/autoit]Details
Aktiviert/Deaktiviert die OnEvent Funktionsanmeldung.
0 = (Standard) deaktiviert.
1 = aktiviert.
Hier ein Beispiel für die Interaktion des OnEvent-Modus bei verschiedenen Controls (Ctrl):
Beispiel GUI
#include <AVIConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <ButtonConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <ComboConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <DateTimeConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <EditConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <GUIConstantsEx.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <GUIListBox.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <ListViewConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <SliderConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <StaticConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <TabConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <TreeViewConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <WindowsConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
Opt("TrayMenuMode", 1) ;Diese Funktion setzt den Tray-Menü-Modus auf 1 (ohne Standartmenü)
Opt("TrayOnEventMode", 1) ;Diese Funktion aktiviert den OnEvent-Modus für das Tray-Menü
Opt("GUIOnEventMode", 1) ;Diese Funktion aktiviert den OnEvent-Modus für das GUI
#Region ### START Koda GUI section ### Form=C:\Users\Burak\Desktop\Tutorial\oneventbeispiel.kxf
$Form1 = GUICreate("Beispiel GUI", 818, 382) ;Diese Funktion erstellt ein GUI-Fenster
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit") ;Wenn das GUI-Fenster geschlossen wird, wird _Exit aufgerufen
$MenuItem1 = GUICtrlCreateMenu("&Datei") ;Diese Funktion erstellt ein Menüleisten Control
$MenuItem2 = GUICtrlCreateMenuItem("Verstecken", $MenuItem1) ;Diese Funktion erstellt ein Menu-Item Control
GUICtrlSetOnEvent(-1, "_Hide") ; ;Wenn das Control angeklickt wurde, wird _Hide aufgerufen
$MenuItem3 = GUICtrlCreateMenuItem("Beenden", $MenuItem1) ;Diese Funktion erstellt ein Menu-Item Control
GUICtrlSetOnEvent(-1, "_Exit") ; ;Wenn das Control angeklickt wurde, wird _Exit aufgerufen
$Label1 = GUICtrlCreateLabel("Label1", 8, 40, 36, 17) ;Diese Funktion erstellt ein Label-Control
GUICtrlSetOnEvent(-1, "_Label1") ; ;Wenn das Control angeklickt wurde, wird _Label1 aufgerufen
$Input1 = GUICtrlCreateInput("Input1", 8, 64, 121, 21) ;Diese Funktion erstellt ein Input-Control
$Edit1 = GUICtrlCreateEdit("Edit", 8, 88, 185, 89) ;Diese Funktion erstellt ein Edit-Control
$Button1 = GUICtrlCreateButton("Button1", 8, 176, 75, 25, $WS_GROUP) ;Diese Funktion erstellt ein Button-Control
GUICtrlSetOnEvent(-1, "_Button1") ;Wenn das Control angeklickt wurde, wird _Button1 aufgerufen
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 8, 200, 97, 17) ;Diese Funktion erstellt ein Checkbox-Control
GUICtrlSetOnEvent(-1, "_Checkbox1") ; ;Wenn das Control angeklickt wurde, wird _Checkbox1 aufgerufen
$Radio1 = GUICtrlCreateRadio("Radio1", 8, 216, 57, 17) ;Diese Funktion erstellt ein Radio-Control
GUICtrlSetOnEvent(-1, "_Radio1") ;Wenn das Control angeklickt wurde, wird _Radio1 aufgerufen
$Radio2 = GUICtrlCreateRadio("Radio2", 72, 216, 57, 17) ;Diese Funktion erstellt ein Radio-Control
GUICtrlSetOnEvent(-1, "_Radio2") ;Wenn das Control angeklickt wurde, wird _Radio2 aufgerufen
$List1 = GUICtrlCreateList("", 8, 232, 121, 97) ;Diese Funktion erstellt ein List-Control
GUICtrlSetOnEvent(-1, "_List1") ;Wenn das Control angeklickt wurde, wird _List1 aufgerufen
GUICtrlSetData(-1, "Beispiel 1|Beispiel 2|Beispiel 3") ;Diese Funktion setzt den Inhalt des List-Controls
$Combo1 = GUICtrlCreateCombo("Combo1", 8, 336, 145, 25) ;Diese Funktion erstellt ein Combo-Control
GUICtrlSetOnEvent(-1, "_Combo1") ;Wenn das Control angeklickt wurde, wird _Combo1 aufgerufen
GUICtrlSetData(-1, "Beispiel 1|Beispiel 2|Beispiel 3") ;Diese Funktion setzt den Inhalt des Combo-Controls
$Pic1 = GUICtrlCreatePic("C:\Program Files\AutoIt3\Examples\GUI\logo4.gif", 208, 0, 185, 100, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS)) ;Diese Funktion erstellt ein Pic (Bild)-Control
GUICtrlSetOnEvent(-1, "_Pic1") ;Wenn das Control angeklickt wurde, wird _Pic1 aufgerufen
$Input2 = GUICtrlCreateInput("1", 208, 112, 40, 21) ;Diese Funktion erstellt ein Input-Control für den Updown-Control
GUICtrlSetLimit(-1, 999, 1) ;Diese Funktion setzt das Limit des Input-Controls
$Updown1 = GUICtrlCreateUpdown(-1) ;Diese Funktion erstellt ein Updown-Control für das Input-Control
GUICtrlSetOnEvent(-1, "_Updown1") ;Wenn das Control angeklickt wurde, wird _Updown1 aufgerufen
GUICtrlSetLimit(-1, 999, 1) ;Diese Funktion setzt das Limit des Updown-Controls
$Avi1 = GUICtrlCreateAvi("C:\Program Files\AutoIt3\Examples\GUI\sampleAVI.avi", -1, 208, 144, 32, 32, $ACS_AUTOPLAY) ;Diese Funktion erstellt ein Avi-Control das automatisch startet ($ACS_AUTOPLAY)
$Slider1 = GUICtrlCreateSlider(208, 184, 150, 29) ;Diese Funktion erstellt ein Slider-Control
GUICtrlSetOnEvent(-1, "_Slider1") ;Wenn das Control angeklickt wurde, wird _Slider1 aufgerufen
GUICtrlSetData(-1, 50) ;Diese Funktion setzt die Position des Slider-Controls
$Label2 = GUICtrlCreateLabel("50", 208, 216, 20, 17) ;Diese Funktion erstellt ein Label-Control für die Anzeige der Position des Slider-Controls
GUICtrlSetOnEvent(-1, "_Label2") ;Wenn das Control angeklickt wurde, wird _Slider2 aufgerufen
$Date1 = GUICtrlCreateDate("", 208, 240, 186, 21) ;Diese Funktion erstellt ein Datums-Control
GUICtrlSetOnEvent(-1, "_Date1") ;Wenn das Control angeklickt wurde, wird _Date1 aufgerufen
$MonthCal1 = GUICtrlCreateMonthCal("", 408, 0, 196, 164) ;Diese Funktion erstellt ein Monatskalender-Control
GUICtrlSetOnEvent(-1, "_MonthCal1") ;Wenn das Control angeklickt wurde, wird _MonthCal1 aufgerufen
$TreeView1 = GUICtrlCreateTreeView(208, 264, 185, 89) ;Diese Funktion erstellt ein TreeView-Control
$TreeView1_0 = GUICtrlCreateTreeViewItem("Beispiel 1", $TreeView1) ;Diese Funktion erstellt ein TreeView-Item zu dem TreeView-Control
$TreeView1_1 = GUICtrlCreateTreeViewItem("Beispiel 1 Item 1", $TreeView1_0) ;Diese Funktion erstellt ein TreeView-Item zu dem TreeView-Control
$TreeView1_2 = GUICtrlCreateTreeViewItem("Beispiel 1 Item 2", $TreeView1_0) ;Diese Funktion erstellt ein TreeView-Item zu dem TreeView-Control
$TreeView1_3 = GUICtrlCreateTreeViewItem("Beispiel 2", $TreeView1) ;Diese Funktion erstellt ein TreeView-Item zu dem TreeView-Control
$TreeView1_4 = GUICtrlCreateTreeViewItem("Beispiel 1 Item 1", $TreeView1_3) ;Diese Funktion erstellt ein TreeView-Item zu dem TreeView-Control
$ListView1 = GUICtrlCreateListView("Beispiel 1|Beispiel 2", 408, 184, 200, 174) ;Diese Funktion erstellt ein ListView-Control
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 98) ;Diese Funktion setzt die Breite der Spalte 1
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 98) ;Diese Funktion setzt die Breite der Spalte 2
$ListView1_0 = GUICtrlCreateListViewItem("Beispiel 1 Item 1|Beispiel 2 Item 1", $ListView1) ;Diese Funktion erstellt ein ListView-Item zu dem ListView-Control
$ListView1_1 = GUICtrlCreateListViewItem("Beispiel 1 Item 2", $ListView1) ;Diese Funktion erstellt ein ListView-Item zu dem ListView-Control
$ListView1_2 = GUICtrlCreateListViewItem("|Beispiel 2 Item 2", $ListView1) ;Diese Funktion erstellt ein ListView-Item zu dem ListView-Control
$ListView1_3 = GUICtrlCreateListViewItem("Beispiel 2 Item 3", $ListView1) ;Diese Funktion erstellt ein ListView-Item zu dem ListView-Control
$Tab1 = GUICtrlCreateTab(616, 0, 193, 81) ;Diese Funktion erstellt ein Tab-Control
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) ;Diese Funktion setzt die Größenänderungen für das Tab-Control
$TabSheet1 = GUICtrlCreateTabItem("Beispiel 1") ;Diese Funktion erstellt ein Tab-Item zu dem Tab-Control
$Button2 = GUICtrlCreateButton("Beispiel 1 Button", 624, 40, 91, 25, $WS_GROUP) ;Diese Funktion erstellt ein Button-Control in dem Tab-Control
GUICtrlSetOnEvent(-1, "_Button2") ;Wenn das Control angeklickt wurde, wird _Button2 aufgerufen
$TabSheet2 = GUICtrlCreateTabItem("Beispiel 2") ;Diese Funktion erstellt ein Tab-Item zu dem Tab-Control
$Button3 = GUICtrlCreateButton("Beispiel 2 Button", 624, 40, 91, 25, $WS_GROUP) ;Diese Funktion erstellt ein Button-Control in dem Tab-Control
GUICtrlSetOnEvent(-1, "_Button3") ;Wenn das Control angeklickt wurde, wird _Button3 aufgerufen
GUICtrlCreateTabItem("") ;Diese Funktion schließt das Tab-Control
$Obj1 = ObjCreate("Shell.Explorer.2") ;Diese Funktion erstellt ein Objekt
$Obj1_ctrl = GUICtrlCreateObj($Obj1, 616, 88, 192, 264) ;Diese Funktion bindet das Objekt in das GUI-Fenster ein
$MenuItem5 = TrayCreateItem("Wiederherstellen") ;Diese Funktion erstellt ein Tray-Item in das vorhande Tray-Menu
TrayItemSetOnEvent(-1, "_TrayRestore") ;Wenn das Control angeklickt wurde, wird _TrayRestore aufgerufen
$MenuItem6 = TrayCreateItem("Verstecken") ;Diese Funktion erstellt ein Tray-Item in das vorhande Tray-Menu
TrayItemSetOnEvent(-1, "_TrayHide") ;Wenn das Control angeklickt wurde, wird _TrayHide aufgerufen
$MenuItem7 = TrayCreateItem("Minimieren") ;Diese Funktion erstellt ein Tray-Item in das vorhande Tray-Menu
TrayItemSetOnEvent(-1, "_TrayMinimize") ;Wenn das Control angeklickt wurde, wird _TrayMinimize aufgerufen
$MenuItem8 = TrayCreateItem("Beenden") ;Diese Funktion erstellt ein Tray-Item in das vorhande Tray-Menu
TrayItemSetOnEvent(-1, "_Exit") ;Wenn das Control angeklickt wurde, wird _Exit aufgerufen
GUISetState() ;Diese Funktion kann ohne Parameter angegeben werden, sie dient dazu das GUI-Fenster sichtbar zu machen
#EndRegion ### END Koda GUI section ###
While 1 ;Diese Schleife dient dazu, dass das GUI-Fenster unendlich lang offen bleibt, bis es vom Benutzer geschlossen wird. (Endlosschleife)
Sleep(100)
WEnd ;Diese Schleife schließt die Endlosschleife
Func _Exit()
GUIDelete($Form1) ;Diese Funktion löscht das GUI-Fenster
Exit ;Diese Funktion beendet das Skript
EndFunc
Func _Hide()
GUISetState(@SW_HIDE) ;Die Funktion versteckt das GUI-Fenster
EndFunc
Func _Label1()
MsgBox(0, "", "Label1 wurde angeklickt") ;Zeigt eine MessageBox
EndFunc
Func _Button1()
MsgBox(0, "", "Button1 wurde angeklickt") ;Zeigt eine MessageBox
EndFunc
Func _Checkbox1()
If BitAND(GUICtrlRead($Checkbox1), $GUI_CHECKED) = $GUI_CHECKED Then
MsgBox(0, "", "Checkbox1 wurde angekreuzt") ;Zeigt eine MessageBox
Else
MsgBox(0, "", "Checkbox1 wurde ausgekreuzt") ;Zeigt eine MessageBox
EndIf
EndFunc
Func _Radio1()
MsgBox(0, "", "Radio1 wurde angeklickt") ;Zeigt eine MessageBox
EndFunc
Func _Radio2()
MsgBox(0, "", "Radio2 wurde angeklickt") ;Zeigt eine MessageBox
EndFunc
Func _List1()
If GUICtrlRead($List1) <> "" Then
MsgBox(0, "", GUICtrlRead($List1) & " in List1 wurde angeklickt") ;Zeigt eine MessageBox
Else
MsgBox(0, "", "List1 wurde angeklickt") ;Zeigt eine MessageBox
EndIf
EndFunc
Func _Combo1()
MsgBox(0, "", "Combo1 wurde in " & GUICtrlRead($Combo1) & " umgeändert") ;Zeigt eine MessageBox
EndFunc
Func _Pic1()
MsgBox(0, "", "Pic1 wurde angeklickt") ;Zeigt eine MessageBox
EndFunc
Func _Updown1()
MsgBox(0, "", "Updown1 wurde angeklickt und Input2 wurde der Wert " & GUICtrlRead($Input2) & " zugewiesen") ;Zeigt eine MessageBox
EndFunc
Func _Slider1()
GUICtrlSetData($Label2, GUICtrlRead($Slider1))
EndFunc
Func _Label2()
MsgBox(0, "", "Label2 wurde angeklickt") ;Zeigt eine MessageBox
EndFunc
Func _Date1()
MsgBox(0, "", "Date1 wurde auf " & GUICtrlRead($Date1) & " gesetzt") ;Zeigt eine MessageBox
EndFunc
Func _MonthCal1()
MsgBox(0, "", "Date1 wurde auf " & GUICtrlRead($MonthCal1) & " gesetzt") ;Zeigt eine MessageBox
EndFunc
Func _Tab1()
MsgBox(0, "", "Tab1 wurde angeklickt") ;Zeigt eine MessageBox
EndFunc
Func _Button2()
MsgBox(0, "", "Button2 wurde angeklickt") ;Zeigt eine MessageBox
EndFunc
Func _Button3()
MsgBox(0, "", "Button3 wurde angeklickt") ;Zeigt eine MessageBox
EndFunc
Func _TrayRestore()
TrayItemSetState($MenuItem5, 4) ;Entfernt das Häckchen das ensteht, wenn der Benutzer das Tray-Item anklickt
GUISetState(@SW_SHOW) ;Diese Funktion zeigt das GUI-Fenster
GUISetState(@SW_RESTORE) ;Diese Funktion stellt das GUI-Fenster wieder her
EndFunc
Func _TrayMinimize()
TrayItemSetState($MenuItem7, 4) ;Entfernt das Häckchen das ensteht, wenn der Benutzer das Tray-Item anklickt
GUISetState(@SW_MINIMIZE) ;Diese Funktion minimiert das GUI-Fenster
EndFunc
Func _TrayHide()
TrayItemSetState($MenuItem6, 4) ;Entfernt das Häckchen das ensteht, wenn der Benutzer das Tray-Item anklickt
GUISetState(@SW_HIDE) ;Diese Funktion versteckt das GUI-Fenster
EndFunc
Mehrere GUI's im OnEvent-Modus
Bei mehreren GUI's ist die bessere Variante, den GUIOnEvent-Modus zu wählen. Außerdem ist es wichtig, dass man die GUI's vorher erstellt und später erst erscheinen lässt. Hier ein Beispiel für merhrere GUI's:
Beispiel für mehrere GUI's
#include <GUIConstantsEx.au3>
Opt("GUIOnEventMode", 1)
$GUI1 = GUICreate("GUI 1")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
$Button1 = GUICtrlCreateButton("GUI 2 anzeigen", 150, 150)
GUICtrlSetOnEvent(-1, "_Button1")
GUISetState()
$GUI2 = GUICreate("GUI 2")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Button2")
$Button2 = GUICtrlCreateButton("GUI 1 anzeigen", 150, 150)
GUICtrlSetOnEvent(-1, "_Button2")
GUISetState(@SW_HIDE)
While 1
Sleep(100)
WEnd
Func _Exit()
GUIDelete($GUI1)
GUIDelete($GUI2)
Exit
EndFunc
Func _Button1()
GUISetState(@SW_SHOW, $GUI2)
GUISetState(@SW_HIDE, $GUI1)
EndFunc
Func _Button2()
GUISetState(@SW_SHOW, $GUI1)
GUISetState(@SW_HIDE, $GUI2)
EndFunc
GUIGetMsg()-Modus
Die andere Möglichkeit bei einer GUI zur Interaktion, ist der GUIGetMsg()-Modus. Dieser ist der Standart, der von AutoIt voreingestellte Modus. Hier ein Beispiel GUI:
Beispiel GUI
#include <AVIConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <ButtonConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <ComboConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <DateTimeConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <EditConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <GUIConstantsEx.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <GUIListBox.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <ListViewConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <SliderConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <StaticConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <TabConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <TreeViewConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
#include <WindowsConstants.au3> ;Diese Funktion bindet dieses Skript (in <>)mit in das Skript rein
Opt("TrayMenuMode", 1) ;Diese Funktion setzt den Tray-Menü-Modus auf 1 (ohne Standartmenü)
#Region ### START Koda GUI section ### Form=C:\Users\Burak\Desktop\Tutorial\beispiel.kxf
$Form1 = GUICreate("Beispiel GUI", 818, 382) ;Diese Funktion erstellt ein GUI-Fenster
$MenuItem1 = GUICtrlCreateMenu("&Datei") ;Diese Funktion erstellt ein Menüleisten Control
$MenuItem2 = GUICtrlCreateMenuItem("Verstecken", $MenuItem1) ;Diese Funktion erstellt ein Menu-Item Control
$MenuItem3 = GUICtrlCreateMenuItem("Beenden", $MenuItem1) ;Diese Funktion erstellt ein Menu-Item Control
$Label1 = GUICtrlCreateLabel("Label1", 8, 40, 36, 17) ;Diese Funktion erstellt ein Label-Control
$Input1 = GUICtrlCreateInput("Input1", 8, 64, 121, 21) ;Diese Funktion erstellt ein Input-Control
$Edit1 = GUICtrlCreateEdit("Edit", 8, 88, 185, 89) ;Diese Funktion erstellt ein Edit-Control
$Button1 = GUICtrlCreateButton("Button1", 8, 176, 75, 25, $WS_GROUP) ;Diese Funktion erstellt ein Button-Control
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 8, 200, 97, 17) ;Diese Funktion erstellt ein Checkbox-Control
$Radio1 = GUICtrlCreateRadio("Radio1", 8, 216, 57, 17) ;Diese Funktion erstellt ein Radio-Control
$Radio2 = GUICtrlCreateRadio("Radio2", 72, 216, 57, 17) ;Diese Funktion erstellt ein Radio-Control
$List1 = GUICtrlCreateList("", 8, 232, 121, 97) ;Diese Funktion erstellt ein List-Control
GUICtrlSetData(-1, "Beispiel 1|Beispiel 2|Beispiel 3") ;Diese Funktion setzt den Inhalt des List-Controls
$Combo1 = GUICtrlCreateCombo("Combo1", 8, 336, 145, 25) ;Diese Funktion erstellt ein Combo-Control
GUICtrlSetData(-1, "Beispiel 1|Beispiel 2|Beispiel 3") ;Diese Funktion setzt den Inhalt des Combo-Controls
$Pic1 = GUICtrlCreatePic("C:\Program Files\AutoIt3\Examples\GUI\logo4.gif", 208, 0, 185, 100, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS)) ;Diese Funktion erstellt ein Pic (Bild)-Control
$Input2 = GUICtrlCreateInput("1", 208, 112, 40, 21) ;Diese Funktion erstellt ein Input-Control für den Updown-Control
GUICtrlSetLimit(-1, 999, 1) ;Diese Funktion setzt das Limit des Input-Controls
$Updown1 = GUICtrlCreateUpdown(-1) ;Diese Funktion erstellt ein Updown-Control für das Input-Control
GUICtrlSetLimit(-1, 999, 1) ;Diese Funktion setzt das Limit des Updown-Controls
$Avi1 = GUICtrlCreateAvi("C:\Program Files\AutoIt3\Examples\GUI\sampleAVI.avi", -1, 208, 144, 32, 32, $ACS_AUTOPLAY) ;Diese Funktion erstellt ein Avi-Control das automatisch startet ($ACS_AUTOPLAY)
$Slider1 = GUICtrlCreateSlider(208, 184, 150, 29) ;Diese Funktion erstellt ein Slider-Control
GUICtrlSetData(-1, 50) ;Diese Funktion setzt die Position des Slider-Controls
$Label2 = GUICtrlCreateLabel("50", 208, 216, 20, 17) ;Diese Funktion erstellt ein Label-Control für die Anzeige der Position des Slider-Controls
$Date1 = GUICtrlCreateDate("", 208, 240, 186, 21) ;Diese Funktion erstellt ein Datums-Control
$MonthCal1 = GUICtrlCreateMonthCal("", 408, 0, 196, 164) ;Diese Funktion erstellt ein Monatskalender-Control
$TreeView1 = GUICtrlCreateTreeView(208, 264, 185, 89) ;Diese Funktion erstellt ein TreeView-Control
$TreeView1_0 = GUICtrlCreateTreeViewItem("Beispiel 1", $TreeView1) ;Diese Funktion erstellt ein TreeView-Item zu dem TreeView-Control
$TreeView1_1 = GUICtrlCreateTreeViewItem("Beispiel 1 Item 1", $TreeView1_0) ;Diese Funktion erstellt ein TreeView-Item zu dem TreeView-Control
$TreeView1_2 = GUICtrlCreateTreeViewItem("Beispiel 1 Item 2", $TreeView1_0) ;Diese Funktion erstellt ein TreeView-Item zu dem TreeView-Control
$TreeView1_3 = GUICtrlCreateTreeViewItem("Beispiel 2", $TreeView1) ;Diese Funktion erstellt ein TreeView-Item zu dem TreeView-Control
$TreeView1_4 = GUICtrlCreateTreeViewItem("Beispiel 1 Item 1", $TreeView1_3) ;Diese Funktion erstellt ein TreeView-Item zu dem TreeView-Control
$ListView1 = GUICtrlCreateListView("Beispiel 1|Beispiel 2", 408, 184, 200, 174) ;Diese Funktion erstellt ein ListView-Control
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 98) ;Diese Funktion setzt die Breite der Spalte 1
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 98) ;Diese Funktion setzt die Breite der Spalte 2
$ListView1_0 = GUICtrlCreateListViewItem("Beispiel 1 Item 1|Beispiel 2 Item 1", $ListView1) ;Diese Funktion erstellt ein ListView-Item zu dem ListView-Control
$ListView1_1 = GUICtrlCreateListViewItem("Beispiel 1 Item 2", $ListView1) ;Diese Funktion erstellt ein ListView-Item zu dem ListView-Control
$ListView1_2 = GUICtrlCreateListViewItem("|Beispiel 2 Item 2", $ListView1) ;Diese Funktion erstellt ein ListView-Item zu dem ListView-Control
$ListView1_3 = GUICtrlCreateListViewItem("Beispiel 2 Item 3", $ListView1) ;Diese Funktion erstellt ein ListView-Item zu dem ListView-Control
$Tab1 = GUICtrlCreateTab(616, 0, 193, 81) ;Diese Funktion erstellt ein Tab-Control
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) ;Diese Funktion setzt die Größenänderungen für das Tab-Control
$TabSheet1 = GUICtrlCreateTabItem("Beispiel 1") ;Diese Funktion erstellt ein Tab-Item zu dem Tab-Control
$Button2 = GUICtrlCreateButton("Beispiel 1 Button", 624, 40, 91, 25, $WS_GROUP) ;Diese Funktion erstellt ein Button-Control in dem Tab-Control
$TabSheet2 = GUICtrlCreateTabItem("Beispiel 2") ;Diese Funktion erstellt ein Tab-Item zu dem Tab-Control
$Button3 = GUICtrlCreateButton("Beispiel 2 Button", 624, 40, 91, 25, $WS_GROUP) ;Diese Funktion erstellt ein Button-Control in dem Tab-Control
GUICtrlCreateTabItem("") ;Diese Funktion schließt das Tab-Control
$Obj1 = ObjCreate("Shell.Explorer.2") ;Diese Funktion erstellt ein Objekt
$Obj1_ctrl = GUICtrlCreateObj($Obj1, 616, 88, 192, 264) ;Diese Funktion bindet das Objekt in das GUI-Fenster ein
$MenuItem5 = TrayCreateItem("Wiederherstellen") ;Diese Funktion erstellt ein Tray-Item in das vorhande Tray-Menu
$MenuItem6 = TrayCreateItem("Verstecken") ;Diese Funktion erstellt ein Tray-Item in das vorhande Tray-Menu
$MenuItem7 = TrayCreateItem("Minimieren") ;Diese Funktion erstellt ein Tray-Item in das vorhande Tray-Menu
$MenuItem8 = TrayCreateItem("Beenden") ;Diese Funktion erstellt ein Tray-Item in das vorhande Tray-Menu
GUISetState() ;Diese Funktion kann ohne Parameter angegeben werden, sie dient dazu das GUI-Fenster sichtbar zu machen
#EndRegion ### END Koda GUI section ###
While 1 ;Diese Schleife dient dazu, dass das GUI-Fenster unendlich lang offen bleibt, bis es vom Benutzer geschlossen wird. (Endlosschleife)
$nGUIMsg = GUIGetMsg()
$nTRAYMsg = TrayGetMsg()
Switch $nGUIMsg
Case $MenuItem2
_Hide()
Case $MenuItem3, $GUI_EVENT_CLOSE
_Exit()
Case $Label1
_Label1()
Case $Button1
_Button1()
Case $Checkbox1
_Checkbox1()
Case $Radio1
_Radio1()
Case $Radio2
_Radio2()
Case $List1
_List1()
Case $Combo1
_Combo1()
Case $Pic1
_Pic1()
Case $Updown1
_Updown1()
Case $Slider1
_Slider1()
Case $Label2
_Label2()
Case $Date1
_Date1()
Case $MonthCal1
_MonthCal1()
Case $Button2
_Button2()
Case $Button3
_Button3()
EndSwitch
Switch $nTRAYMsg
Case $MenuItem5
_TrayRestore()
Case $MenuItem6
_TrayHide()
Case $MenuItem7
_TrayMinimize()
Case $MenuItem8
_Exit()
EndSwitch
WEnd ;Diese Schleife schließt die Endlosschleife
[/autoit] [autoit][/autoit] [autoit]Func _Exit()
GUIDelete($Form1) ;Diese Funktion löscht das GUI-Fenster
Exit ;Diese Funktion beendet das Skript
EndFunc
Func _Hide()
GUISetState(@SW_HIDE) ;Die Funktion versteckt das GUI-Fenster
EndFunc
Func _Label1()
MsgBox(0, "", "Label1 wurde angeklickt") ;Zeigt eine MessageBox
EndFunc
Func _Button1()
MsgBox(0, "", "Button1 wurde angeklickt") ;Zeigt eine MessageBox
EndFunc
Func _Checkbox1()
If BitAND(GUICtrlRead($Checkbox1), $GUI_CHECKED) = $GUI_CHECKED Then
MsgBox(0, "", "Checkbox1 wurde angekreuzt") ;Zeigt eine MessageBox
Else
MsgBox(0, "", "Checkbox1 wurde ausgekreuzt") ;Zeigt eine MessageBox
EndIf
EndFunc
Func _Radio1()
MsgBox(0, "", "Radio1 wurde angeklickt") ;Zeigt eine MessageBox
EndFunc
Func _Radio2()
MsgBox(0, "", "Radio2 wurde angeklickt") ;Zeigt eine MessageBox
EndFunc
Func _List1()
If GUICtrlRead($List1) <> "" Then
MsgBox(0, "", GUICtrlRead($List1) & " in List1 wurde angeklickt") ;Zeigt eine MessageBox
Else
MsgBox(0, "", "List1 wurde angeklickt") ;Zeigt eine MessageBox
EndIf
EndFunc
Func _Combo1()
MsgBox(0, "", "Combo1 wurde in " & GUICtrlRead($Combo1) & " umgeändert") ;Zeigt eine MessageBox
EndFunc
Func _Pic1()
MsgBox(0, "", "Pic1 wurde angeklickt") ;Zeigt eine MessageBox
EndFunc
Func _Updown1()
MsgBox(0, "", "Updown1 wurde angeklickt und Input2 wurde der Wert " & GUICtrlRead($Input2) & " zugewiesen") ;Zeigt eine MessageBox
EndFunc
Func _Slider1()
GUICtrlSetData($Label2, GUICtrlRead($Slider1))
EndFunc
Func _Label2()
MsgBox(0, "", "Label2 wurde angeklickt") ;Zeigt eine MessageBox
EndFunc
Func _Date1()
MsgBox(0, "", "Date1 wurde auf " & GUICtrlRead($Date1) & " gesetzt") ;Zeigt eine MessageBox
EndFunc
Func _MonthCal1()
MsgBox(0, "", "Date1 wurde auf " & GUICtrlRead($MonthCal1) & " gesetzt") ;Zeigt eine MessageBox
EndFunc
Func _Tab1()
MsgBox(0, "", "Tab1 wurde angeklickt") ;Zeigt eine MessageBox
EndFunc
Func _Button2()
MsgBox(0, "", "Button2 wurde angeklickt") ;Zeigt eine MessageBox
EndFunc
Func _Button3()
MsgBox(0, "", "Button3 wurde angeklickt") ;Zeigt eine MessageBox
EndFunc
Func _TrayRestore()
TrayItemSetState($MenuItem5, 4) ;Entfernt das Häckchen das ensteht, wenn der Benutzer das Tray-Item anklickt
GUISetState(@SW_SHOW) ;Diese Funktion zeigt das GUI-Fenster
GUISetState(@SW_RESTORE) ;Diese Funktion stellt das GUI-Fenster wieder her
EndFunc
Func _TrayMinimize()
TrayItemSetState($MenuItem7, 4) ;Entfernt das Häckchen das ensteht, wenn der Benutzer das Tray-Item anklickt
GUISetState(@SW_MINIMIZE) ;Diese Funktion minimiert das GUI-Fenster
EndFunc
Func _TrayHide()
TrayItemSetState($MenuItem6, 4) ;Entfernt das Häckchen das ensteht, wenn der Benutzer das Tray-Item anklickt
GUISetState(@SW_HIDE) ;Diese Funktion versteckt das GUI-Fenster
EndFunc
Mehrere GUI's im GUIGetMsg()-Modus
An dieser Stelle möche ich wiederholen, dass der OnEvent-Modus eine bessere Lösung ist, vorallem bei mehreren GUI's. Hier ein Beispiel für den GUIGetMsg()-Modus mit zwei GUI's (man kann selber nach dem Muster mehr erstellen):
Beispiel für mehrere GUI's
#include <GUIConstantsEx.au3>
$GUI1 = GUICreate("GUI 1")
$Button1 = GUICtrlCreateButton("GUI 2 anzeigen", 150, 150)
GUISetState()
$GUI2 = GUICreate("GUI 2")
$Button2 = GUICtrlCreateButton("GUI 1 anzeigen", 150, 150)
GUISetState(@SW_HIDE)
While 1
$nMsg = GUIGetMsg(1)
Switch $nMsg[1]
Case $GUI1
Switch $nMsg[0]
Case $Button1
_Button1()
Case $GUI_EVENT_CLOSE
_Exit()
EndSwitch
Case $GUI2
Switch $nMsg[0]
Case $Button2, $GUI_EVENT_CLOSE
_Button2()
EndSwitch
EndSwitch
WEnd
Func _Exit()
GUIDelete($GUI1)
GUIDelete($GUI2)
Exit
EndFunc
Func _Button1()
GUISetState(@SW_SHOW, $GUI2)
GUISetState(@SW_HIDE, $GUI1)
EndFunc
Func _Button2()
GUISetState(@SW_SHOW, $GUI1)
GUISetState(@SW_HIDE, $GUI2)
EndFunc
~~~~~~~Ende~~~~~~~
Ich freue mich auf Feedback und Verbesserungsvorschläge.
Mit freundlichen Grüßen,
BurakSZ