Hallo zusammen
ich hab da ein Script zum Versenden von SMS über einen Webdienst, im Grunde funktioniert auch alles, nur wird nun bei Klick auf einen der 5 Buttons $idMUSTER[] stets der Text von Button 5 $idMUSTER[4] ins Textfeld eingefügt und ich finde einfach keine Erklärung dafür. In den Tooltips wird korrekt der jeweilige Text angezeigt, was ja heissen dürfte, die Buttons werden korrekt angezeigt. Auch im Teil des Scripts, der den Text aus der .txt ins Textfeld kopiert, sehe ich keinen Fehler.
Könnte mir hier bitte jemand sagen, was hier das Problem sein könnte? Danke schonmal.
C
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <GuiEdit.au3>
#include <ColorConstants.au3>
#include <StaticConstants.au3>
#include <File.au3>
#include <FileConstants.au3>
Global $loop = 5 ;~Anzahl Buttons definieren
;~ SMS-Vorlagen aus txt Datei in Array einlesen
Global $FILE[$loop]
Global $FileOpen[$loop]
Global $text[$loop]
Global $idMUSTER[$loop]
Global $muster[$loop]
For $i = 0 To $loop - 1
$FILE[$i] = "muster" & $i & ".txt"
$FileOpen[$i] = FileOpen($FILE[$i])
$text[$i] = FileRead($FileOpen[$i])
FileClose($FileOpen[$i])
Next
;~ gui1 erstellen
Global $hGUI1 = GUICreate("SMS Box", 600, 680)
Global $idVORWAHL = GUICtrlCreateCombo("076", 10, 5, 50, 20)
GUICtrlSetData(-1, "077|078|079")
Global $idNR = GUICtrlCreateInput("", 60, 5, 60, 20, $ES_NUMBER)
GUICtrlSetLimit(-1, 7)
Global $idTEXT = GUICtrlCreateEdit("", 10, 60, 300, 200, $ES_MULTILINE)
GUICtrlSetLimit(-1, 800)
Global $idSENDEN = GUICtrlCreateButton("Senden", 30, 280, 85, 25)
Global $idENDE = GUICtrlCreateButton("Schliessen", 130, 280, 85, 25)
Global $idDEL = GUICtrlCreateButton("Löschen", 230, 280, 85, 25)
Global $idLABEL1 = GUICtrlCreateLabel("<- Nr", 120, 8, 50, 20)
Global $idCLIPBOARD = GUICtrlCreateButton("Nr. aus Clipboard einfügen", 150, 5, 145, 22)
GUICtrlSetColor(-1, $COLOR_RED)
Global $idLABEL6 = GUICtrlCreateLabel("Absender ->", 360, 8, 100, 20)
Global $idABSENDER = GUICtrlCreateCombo("0442775658", 420, 5, 100, 20)
GUICtrlSetData(-1, "0442775656")
Global $idLABEL2 = GUICtrlCreateLabel("0", 163, 40, 30, 20)
GUICtrlSetColor(-1, $COLOR_RED)
Global $idLABEL3 = GUICtrlCreateLabel("Anz. Zeichen (min. 5/max. 800):", 10, 40, 152, 20)
Global $idLABEL4 = GUICtrlCreateLabel("0", 290, 40, 30, 20)
GUICtrlSetColor(-1, $COLOR_RED)
Global $idLABEL5 = GUICtrlCreateLabel("Anz. SMS (max. 5):", 190, 40, 100, 20)
Global $idLABEL6 = GUICtrlCreateLabel("SMS Vorlagen (Hover über Button für Text):", 330,65,220,20)
GUICtrlCreateGraphic(310,60,290,1,$SS_BLACKRECT)
For $i = 0 To $loop - 1
$idMUSTER[$i] = GUICtrlCreateButton("Vorlage "& $i+1, 330, 90+($i)*30, 70, 20)
GUICtrlSetTip(-1, $text[$i])
Next
For $i = 0 To $loop - 1
GUICtrlCreateLabel("bearbeiten -->", 410, 93+($i)*30 , 70, 20)
Next
For $i = 0 To $loop - 1
$muster[$i] = GUICtrlCreateButton("", 490, 90+($i)*30, 20, 20)
Next
Global $oIE = ObjCreate("Shell.Explorer.2")
Global $GUIActiveX = GUICtrlCreateObj($oIE, 10, 330, 580, 285)
;~ gui2 erstellen
Global $hGUI2 = GUICreate("Text bearbeiten:", 300, 250)
Global $text_neu = GUICtrlCreateEdit("", 1, 1, 298, 198, $ES_MULTILINE)
Global $speichern = GUICtrlCreateButton("Sichern und Schliessen", 50, 210, 200, 25)
GUISetState(@SW_SHOW, $hGUI1)
GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND")
ControlFocus("", "", 10)
;~ Abfrage Nummer, Text, Absenden des SMS
While 1
$msg = GUIGetMsg(1)
Switch $msg[1]
Case $hGUI1
Switch $msg[0]
Case $GUI_EVENT_CLOSE, $idENDE
Exit
Case $idDEL
GUICtrlSetData($idTEXT, "")
GUICtrlSetData($idNR, "")
Case $muster[0] To $muster[$loop - 1]
For $i = 0 To $loop - 1
GUISetState(@SW_SHOW, $hGUI2)
GUICtrlSetData($text_neu, $text[$i])
Global $idGUI = $i
Next
Case $idMUSTER[0] To $idMUSTER[$loop - 1]
For $i = 0 To $loop - 1
GUICtrlSetData($idTEXT, $text[$i])
Next
;~ Nummer aus Zwischenablage auslesen, formatieren, eingeben
Case $idCLIPBOARD
Local $cbNR = ClipGet()
If $cbNR = "" Then
MsgBox($MB_OK, "Kein Inhalt", "Die Zwischenablage ist leer!")
ElseIf StringIsDigit($cbNR) = 0 Then
$cb = StringRegExpReplace($cbNR, '\D', '')
If StringLen($cb) = 10 Then
$cbPREFIX = StringLeft($cb, 3)
$cbNUMBER = StringRight($cb, 7)
If StringRegExp($cbPREFIX, "07[6789]") = 0 Then
MsgBox($MB_OK, "Vorwahl ungültig", "Die Vorwahl " & $cbPREFIX & " ist ungültig!" & @LF & @LF & "Folgende Vorwahlen sind gültig:" & @LF & "076" & @LF & "077" & @LF & "078" & @LF & "079")
ElseIf StringLeft($cbNUMBER, 1) = "0" Then
MsgBox($MB_OK, "Nummer ungültig", "Die Telefonnummer beginnt mit 0:" & @LF & $cbPREFIX & "/" & $cbNUMBER)
Else
GUICtrlSetData($idVORWAHL, $cbPREFIX)
GUICtrlSetData($idNR, $cbNUMBER)
EndIf
Else
MsgBox($MB_OK, "Nummer ungültig", "Die Nummer ist ungültig (Zu wenig/viel Zeichen)!")
EndIf
EndIf
;~ Nr und Textzeichenanzahl (>4) prüfen, Umlaute anpassen, URL zum Absenden aufrufen
Case $idSENDEN
If StringLen(GUICtrlRead($idNR)) < 7 Then
MsgBox($MB_OK, "Nummer zu kurz", "Die eingegebene Telefonnummer enthält weniger als 7 Ziffern!")
ElseIf StringLen(GUICtrlRead($idTEXT)) < 5 Then
MsgBox($MB_OK, "Text zu kurz", "Der Text muss mindestens 5 Zeichen enthalten")
Else
$ABSENDER = GUICtrlRead($idABSENDER)
$ABSENDER = "0041" & StringRight($ABSENDER, 9)
$PREFIX = StringRight(GUICtrlRead($idVORWAHL), 2)
$NR = "0041" & $PREFIX & GUICtrlRead($idNR)
$TEXT = URLEncode(GUICtrlRead($idTEXT))
If MsgBox($MB_OKCANCEL, "SMS Senden?", "Von: " & $ABSENDER & @LF & "An: " & GUICtrlRead($idVORWAHL) & GUICtrlRead($idNR) & @LF & @LF & "Text:" &@LF & GUICtrlRead($idTEXT)) = 1 Then
;~ If MsgBox($MB_OKCANCEL, "SMS Senden?", "An: " & $NR & @LF & "mit folgendem Text: " & $TEXT) = 1 Then ; formatierte Nummer und Text
$oIE.navigate("http://www.lox24.eu/API/httpsms.php?konto=xxxx&password=xxxxx&service=xxxx&from=" & $ABSENDER & "&to=" & $NR & "&text=" & $TEXT)
EndIf
EndIf
EndSwitch
Case $hGUI2
Switch $msg[0]
Case $speichern
$neuer_text = GUICtrlRead($text_neu)
$datei = "muster" & $idGUI & ".txt"
$open = FileOpen($datei, 2)
FileSetPos($open, 0, 0)
FileWrite($open, $neuer_text)
FileClose($open)
$text[$idGUI] = $neuer_text
GUICtrlSetTip($idMUSTER[$idGUI], $neuer_text)
GUISetState(@SW_HIDE, $hGUI2)
EndSwitch
EndSwitch
WEnd
;~ Funktion für Angabe der Anzahl eingegebener Zeichen resp. Anzahl SMS
Func _WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg
Local $hWndFrom, $iIDFrom, $iCode, $sText, $iLen
$hWndFrom = $lParam
$iIDFrom = _WinAPI_LoWord($wParam)
$iCode = _WinAPI_HiWord($wParam)
Switch $iIDFrom
Case $idTEXT
Switch $iCode
Case $EN_CHANGE
$sText = GUICtrlRead($idTEXT)
$iLen = StringLen($sText)
GUICtrlSetData($idLABEL2, $iLen)
GUICtrlSetData($idLABEL4, Int(($iLen - 1) / 160) + 1)
EndSwitch
Case Else
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc
Func URLEncode($sData)
Local $aData = StringSplit(BinaryToString(StringToBinary($sData,4),1),"")
Local $nChar
$sData=""
For $i = 1 To $aData[0]
; ConsoleWrite($aData[$i] & @CRLF)
$nChar = Asc($aData[$i])
Switch $nChar
Case 45, 46, 48 To 57, 65 To 90, 95, 97 To 122, 126
$sData &= $aData[$i]
Case 32
$sData &= "+"
Case Else
$sData &= "%" & Hex($nChar,2)
EndSwitch
Next
Return $sData
EndFunc
Alles anzeigen