Hö? Wie wärs mit Guictrlread()
Beiträge von Schnitzel
-
-
[autoit]
StringLower()
[/autoit] -
Ja nimm am besten was vom visible Text
Der versteckte Text sollte auch gehen, aber hauptsache dein Text ist eindeutig^^ -
Jo es geht einfach nicht anders weil du eine unbestimmte Anzahl an Clients hast.
Und die Verbindungsdaten musst du irgendwo speichern
Deswegen gibts da egtl keine andere sinnvolle Möglichkeit außer Array's -
Macht glaub ich jetzt wenig sinn ne 30 Zeilen version zu posten die du nicht verstehst^^
Aber grundsätzlich ginge es indem man die Pfade, die Programbezeichnungen und die zugehörigen Checkbox id's in ein Array speichert. Dann kann man viel mit for schleifen abfragen -
Also nur ums nochmal sicherzustellen, ich mein den 2ten Parameter bei z.B. WinWait() oder Controlclick()
Und das ist der Fenstertext (oder ein Teil davon). Der sollte halt möglichst eindeutig sein.
Sowas wie "Installation abgeschlossen" z.B. kommt ja normalerweise in nur einem Fenster der Installation vor -
Du solltest auf jeden Fall die Text Parameter verwenden. Und zwar mit eindeutigen Texten.
Sonst bekommst du fast immer Probleme.
Auch die Sends würde ich ersetzten durch Controlsend o.Ä.Statt den Control ID's verwende ich immer die Klasse (siehe Wininfotool)
Weil ich schon Setups hatte in denen die ID nicht immer gleich war.Eigentlich sollten die Setups nacheinander ausgeführt werden (du rufst ja die Funktionen nacheinander auf...)
Ich denke dein Problem liegt an den Text-Parametern die du nicht verwendest -
In deinem Fall ginge:
Spoiler anzeigen
[autoit]
[/autoit]
Case $Checkbox1 To $Checkbox12
GUICtrlSetState($Button1, $GUI_Disable)
For $i = $Checkbox1 To $Checkbox12
If GUICtrlRead($i) = 1 Then
GUICtrlSetState($Button1, $GUI_enable)
EndIf
NextDas geht aber nur weil du alle Checkboxen direkt hintereinander erstellst.
Mit array's könnte man dein Script noch ganz schön kürzen -
Mit GuiCtrlRead() frägst du den Status der Checkboxen ab.
Und mit GuictrlSetState() kannst du den Status auf $GUI_Enable bzw $GUI_Disable stellen -
Jup du brauchst ein Array in den du die einzelnen Verbindungen speicherst.
Hier is n Beispiel dazu
Simpler Multi TCP Server -
-
Natürlich ist das möglich einfach die AutoIt3.exe per Fileinstall einbinden.
Und dann die Kommandozeilenmethode fürs compilieren verwenden
Siehe :
http://translation.autoit.de/onlinehilfe/intro/compiler.htm -
GuiCtrlSetBkColor geht bei Menüs nicht, also denke ich mal ist das ohne weiteres nicht möglich
-
In der Hilfedatei gibts zu allen Befehlen auch ein Beispiel und Erklärung. Sieh dir doch bitte das mal an.
-
Codeschnipsel:
[autoit]GUIGetCursorInfo
[/autoit] -
Und du hast Dateien direkt auf dem Deskop? (Papierkorb usw zählt nicht dazu)
-
Dann denke ich hast du den Fenstertitel falsch angegeben. Vllt arbeitest du besser mit einem Handle oder ähnlichem.
Ich hab das Fenster nicht einfach nur minimiert sondern ich hab es auf @SW_HIDE gesetzt. Also versteckt.
Minimieren ginge aber genauso. Sieh dir die Hilfe zu GUISetState an -
Beispiel für beide Probleme...
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]GUICreate("", 150, 150)
[/autoit] [autoit][/autoit] [autoit]
$menu1 = GUICtrlCreateMenu("Nr 1")
$menu2 = GUICtrlCreateMenuItem("Zeigen", $menu1)
$menu3 = GUICtrlCreateMenu("Nr 2")
$menu4 = GUICtrlCreateMenuItem("Zeigen", $menu3)
$menu5 = GUICtrlCreateMenu("Nr 3")
$menu6 = GUICtrlCreateMenuItem("Zeigen", $menu5)$1Button = GUICtrlCreateButton("Button Menü 1", 5, 5)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState(-1, $GUI_HIDE)
$2Button = GUICtrlCreateButton("Button Menü 2", 35, 35)
GUICtrlSetState(-1, $GUI_HIDE)
$3Button = GUICtrlCreateButton("Button Menü 3", 65, 65)
GUICtrlSetState(-1, $GUI_HIDE)
GUISetState(@SW_SHOW)While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $menu2
GUICtrlSetState($1Button, $GUI_SHOW)
GUICtrlSetState($2Button, $GUI_HIDE)
GUICtrlSetState($3Button, $GUI_HIDE)
Case $menu4
GUICtrlSetState($1Button, $GUI_HIDE)
GUICtrlSetState($2Button, $GUI_SHOW)
GUICtrlSetState($3Button, $GUI_HIDE)
Case $menu6
GUICtrlSetState($1Button, $GUI_HIDE)
GUICtrlSetState($2Button, $GUI_HIDE)
GUICtrlSetState($3Button, $GUI_SHOW)
Case $3Button
Run("notepad.exe")
GUISetState(@SW_HIDE)
Do
Sleep(100)
Until Not Winexists("Unbenannt - Editor")
GUISetState(@SW_SHOW)
EndSwitch
WEnd -
2D reicht egtl immer aus. Ich hab noch nie 3D verwendet.
_ArrayAdd ist nur für 1D Arrays.
Für 2D-Arrays brauchst du _Array2DAdd aus der Arraymore -
Herzlichen Glückwunsch zum Geburtstag
Feier schön und genieß den Tag