Probleme mit meinem SMS-Tool

  • ich habe folgendes problem

    es geht um das SMS-programm das ich vor einiger zeit gemacht habe
    ich habe nun eine combobox aus der ich die kontakte auswählen kann
    daneben hab ich bis jetzt noch einen "ok" button, damit vorwahl und numer übernommen werden, da das aber ziehmlich umständlich ist möchte ich mir den OK button irgendwie sparen
    also will ich das ich SOBALD in der combobox eine auswahl gertoffen wird die daten übernommen werden

    beim klick auf OK sieht das programm normalerweise in eine .ini datei nach, sucht den namen, darunter lest es vorwahl und nummer aus unt trägt die vorwahl in eine weitere combobox und die nummer in ein inputfeld ein

    wie löse ich das?

    Einmal editiert, zuletzt von Hollywood (18. September 2008 um 10:45)

  • relativ einfach hier mal ein beispielscript:

    [autoit]

    Opt("GUIOnEventMode", 1)
    #include<GUIConstants.au3>
    GUICreate("ComboTest", 100,100)
    $combo = GUICtrlCreateCombo("",10,10)
    GUICtrlSetData($combo, "1|2|3|4|5")
    GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
    GUICtrlSetOnEvent($combo, "test")
    GUISetState()

    [/autoit][autoit][/autoit][autoit]

    While 1
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func test()
    MsgBox(0, "Test", "Inhalt der ComboBox: "&GUICtrlRead($combo))
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    Ist jetzt nicht getestet aber sollte gehen

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • vielen dank für die schnelle antwort

    ich hab jez nur ein weiteres problem:
    zuvor hatte ich den "OK" button in einer whilschleiche mit einer ifabfrage abgefragt
    also

    [autoit]

    elseif $msg = $ek_ok Then
    $s_vorwahl = iniread("Kontakte.ini",GUICtrlRead($empfaenger_kontakt),"vorwahl","-Fehler-")
    $s_nummer = iniread("Kontakte.ini",GUICtrlRead($empfaenger_kontakt),"nummer","")
    GUICtrlSetData($vorwahl,$s_vorwahl)
    GUICtrlSetData($nummer,$s_nummer)
    exitloop

    [/autoit]


    und danach musste ich die schleife natürlich verlassen
    nun bei der funktion ha ich das problem das diese sich natürlich com code her nicht in eienr schleife steht, logisch aber schon
    das heißt sobald ich in der combo etwas auswähle wird die schleife dadurch nciht verlassen und das programm steht

    [autoit]

    Func ausgewaehlt()
    $s_vorwahl = iniread("Kontakte.ini",GUICtrlRead($empfaenger_kontakt),"vorwahl","-Fehler-")
    $s_nummer = iniread("Kontakte.ini",GUICtrlRead($empfaenger_kontakt),"nummer","")
    GUICtrlSetData($vorwahl,$s_vorwahl)
    GUICtrlSetData($nummer,$s_nummer)
    EndFunc

    [/autoit]


    wenn ich in der funktion also exitloop sage gibt es verständlicherweise einen error

  • Aus einer Funktion kommt man mit Return raus... aber ich versteh dein Problem trotzdem nicht wiso willst du unten in dem Scriptpart aus ner schleife raus??? is doch keine da?

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • hm.. wenns nicht an der schleife liegt liegts an was anderen das es nicht geht

    sobald ich etwas auswähle passiert genau garnichts

    [autoit]

    $empfaenger_kontakt=GUICtrlCreateCombo("",10,10,155,25)

    [/autoit][autoit][/autoit][autoit]

    $namen3 = IniReadSectionNames("Kontakte.ini")
    $count3 = 0

    while 1 ;alle kontakte einlesen und in die combo schreiben
    $count3 = $count3 +1
    GUICtrlSetData($empfaenger_kontakt, $namen3[$count3])
    if $count3 = $namen3[0] then exitloop
    wend

    [/autoit][autoit][/autoit][autoit]

    GUICtrlSetOnEvent($empfaenger_kontakt, "ausgewaehlt")

    [/autoit]

    liegt es daran wie ich die combo mit inhalt fülle?

  • bingo, hab ich da oben versucht zu sagen ^^, man ich und meine ausdrucksweise xD

  • jo schreib dein script um auf die gui on event methode

    dazu ganz oben im script: Opt("GUIOnEventMode", 1)

    und dann alle events die du jetzt per msg abfragst in eine eigene funktion machen und diese funktion dann per

    guictrlsetonevent ausfürhen


    Meine Meinung: Immer OnEvent benutzen ist um einiges flexibler und bremst das script nicht aus ;)

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Hi,

    okay, nach dem ich die Fehler raus habe, sehe ich nun eine GUI. Was fehlt jetzt genau?

    Mega

    es geht darum das ich sobald ich einen kontakt in der combobox auswähle die nummer übernommen wird OHNE das ich daneben auf OK klicken muss

  • so habs nun auch von alleine geschafft
    hab aber ne andere frage
    wenn die sms aufgebraucht sind steht auf der teleringseite (http://handyfun.telering.at/web/mms?req=Telering.sendMMS,,Telering.sendMMS,1221460931323_3064&id=0&isSMS=true&backAfterError=true&backAfterSuccess=false&counter=1221486698281) wenn man versucht eine sms zu senden "Leider stehen heute keine kostenlosen SMS mehr zur Verfügung."
    und zwar in zeile 605,
    ich möchte wenn das passiert vom script eine meldung ausgeben das der kontingent aufgebraucht wurde
    wie bekomme ich das hin?

  • könnte das funktionieren?

    [autoit]

    $source=_INetGetSource ( $oIE)
    $fehler= StringInStr($source,"Leider stehen heute keine kostenlosen SMS mehr zur Verfügung.")
    if $fehler>1 Then
    MsgBox(0,"Marco´s WebSMS","Leider stehen heute keine kostenlosen SMS mehr zur Verfügung.")
    ExitLoop
    endif

    [/autoit]

    ich kann es noch nciht ausprobieren, da müsste ich warten bis die freisms für heute aufgebraucht sind

  • habs jetzt geschafft mit:

    [autoit]

    $source=_IEBodyReadHTML ($oIE)
    ConsoleWrite($source)
    $fehler= StringInStr($source,"Leider stehen heute keine kostenlosen SMS mehr zur Verfügung.")
    if $fehler>1 Then
    ConsoleWrite("Error: no more free SMS"& @CRLF)
    MsgBox(0,"Marco´s WebSMS","Leider stehen heute keine kostenlosen SMS mehr zur Verfügung.")
    GUICtrlSetData($status,"SMS senden: Fehlgeschlagen")
    GUICtrlDelete($progress)
    GUICtrlDelete($status)
    GUICtrlSetData($senden,"Offline")
    GUICtrlSetState ( $senden, $GUI_SHOW)
    ExitLoop
    endif

    [/autoit]

    danke allen