Hallo zusammen,
ich sitze jetzt schon Stunden vor einem Problem und habe schon mehrere Lösungswege versucht, natürlich auch Google abgesucht. Leider komme ich zu keinem positiven Ergebnis. Jetzt hoffe ich, dass mir hier jemand helfen kann. Vielleicht sehe ich ja auch nur den Wald vor lauter Bäumen nicht mehr.
Erstmal mein Test-Script:
Spoiler anzeigen
#include <GUIConstants.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
$MainWindow = GUICreate("Testwindow", 500, 500)
GUICtrlSetState(-1, $GUI_ENABLE)
GUISetState(@SW_SHOW, $MainWindow)
$JNLPCheckBox = GUICtrlCreateCheckbox("JNLP-Dateien automatisch anpassen? Bitte IP oder Hostname mit angeben!", 20, 280)
$hostnameBox = GUICtrlCreateInput("", 20, 300, 150)
$UpdateButton = GUICtrlCreateButton("Update!", 20, 450, 100)
[/autoit] [autoit][/autoit] [autoit]while 1
Switch GUIGetMsg()
Case $UpdateButton
$hostRead = GUICtrlRead($hostnameBox)
Call("_CheckInput")
EndSwitch
WEnd
Func _CheckInput()
$ErrorVar = 0
Select
Case GUICtrlRead($JNLPCheckBox) = $GUI_CHECKED And GUICtrlRead($hostnameBox) = 0
$ErrorVar = 6
$ErrorText = "JNLP-Anpassung wurde angehakt, aber kein Hostname/IP eingetragen!"
MsgBox(0, "Test", $ErrorText)
EndSelect
EndFunc
Kurze Erklärung: Es muss eine CheckBox angehakt werden und, falls sie angehakt wurde, in ein Textfeld eine IP/Hostname eingegeben werden. Ist die Checkbox nicht aktiviert, muss auch in der InputBox nichts stehen.
Jetzt habe ich hier folgendes Phänomen:
Sobald ich die Checkbox anhake, ist es schnurzpiepegal, ob ich in die InputBox etwas eintrage oder nicht - Jedes Mal kommt der Dialog, dass die InputBox leer ist. Selbst wenn ich unter $ErrorVar=6 ein ConsoleWrite(GUICtrlRead($hostnameBox)) schreibe, kommt der korrekte Wert zurück. Trotzdem sagt AutoIT, dass dort nichts drin stehen würde.
Ich habe schon folgendes versucht:
Spoiler anzeigen
Case GUICtrlRead($JNLPCheckBox) = $GUI_CHECKED And GUICtrlRead($hostnameBox) = 0
Case GUICtrlRead($JNLPCheckBox) = 1 And GUICtrlRead($hostnameBox) = 0
[/autoit] [autoit][/autoit] [autoit]Case GUICtrlRead($JNLPCheckBox) = $GUI_CHECKED
if GUICtrlRead($hostnameBox) = 0 Then
Case GUICtrlRead($JNLPCheckBox) = 1
if GUICtrlRead($hostnameBox) = 0 Then
Case BitAnd(GUICtrlRead($JNLPCheckBox), $GUI_CHECKED) = $GUI_CHECKED AND GUICtrlRead($hostnameBox) = 0
[/autoit] [autoit][/autoit] [autoit]Case BitAnd(GUICtrlRead($JNLPCheckBox), $GUI_CHECKED) AND GUICtrlRead($hostnameBox) = 0
[/autoit] [autoit][/autoit] [autoit][/autoit]Nichts davon funktioniert. Sobald die Checkbox aktiviert wird, läuft das Script auf die MsgBox. Ich habe eben schon die neue Version des Editors geladen, weil ich eventuell gehofft habe, dass das ein genereller Fehler war. Leider war dem nicht so.
Jetzt hoffe ich hier auf den finalen Denkanstoß....
Schon mal vielen Dank im Voraus.
Neuro