PeterZahlt - FF Version (FireFox) V 1.50

  • New: V 1.50 (Änderung und download siehe beim Script)
    [Blockierte Grafik: http://img297.imageshack.us/img297/5858/peterzahltffkv5.jpg]

    Hallo, ich habe nun mein erstes Script für den FireFox fertiggestellt.

    THX an "Stilgar" für die Unterstützung und die FF.au3 natürlich.

    Der Vorteil beim telefonieren über https://autoit.de/www.peterzahlt.de mit dieser FireFox Version gegenüber der IE Version ist, das man das Fenster auch minimieren kann.
    Daher ist es z.B. beim längeren warten in der Warteschlange möglich den PC
    wie gewohnt weiter zu nutzen.

    Zur Kommunikation mit dem FireFox wird die MozLab Erweiterung benötigt.
    Außerdem wird Stilgar´s geniale FF.au3 includet.

    Nachdem man seine Daten (einmalig) in der data.ini angegeben hat, kanns losgehen.
    [MyData]
    MyNumber=02365123456 ;Eigene Nummer
    Age=30 ;Alter
    gender=m ; Geschlecht
    [Telbuch]

    Hat man über die GUI gewählt, begleitet einen das Script durch den ganzen
    Prozess. Und anders als bei der IE Version arbeitet das Script auch weiter, wenn man in der Warteschlange kommt. (Signalisiert von einem roten flash Tray Icon)
    Nach der Warteschlange wird dann der Button zum telefonieren automatisch gedrückt und das Tray Icon wird wieder grün.

    Da mein Browser ab und an beim telefonieren einfriert, disconnecte ich die Verbindung zum FireFox, wenn die Verbindung hergestellt wurde.
    Sollte der Browser doch mal einen Hänger haben, kann man PeterZahlt nicht über die GUI beenden, wohl aber über das Tray Menu.


    Viel Spaß beim kostenlosen telefonieren
    So long
    Thunder-man

    New:
    ----------------------------------------------------------
    V 1.10
    Der Profilname wird aus der data.ini gelesen
    [MyData]
    Profil="" ; "" bedeutet das default Profil wird gestartet. Oder selber eintragen, z.B. Profil="Test"

    Wichtig: Bei einem Update von V 1.00 nach V 1.10 wird die vorhandene data.ini nicht überschrieben.
    daher die Zeile Profil="" manuell eintragen.
    ----------------------------------------------------------
    V 1.20
    PeterZahlt - FF erkennt nun, ob bei einem Browser "MozPepl" läuft, oder halt nicht.
    Dementsprechend wird eine neue Browser Instanz geöffnet, oder zu einer bestehenden mit laufendem "MozPepl" connectet.
    ----------------------------------------------------------
    V 1.30
    Add _TabExists()
    Es wird geprüft, ob es schon einen Tab mit der PeterZahlt Home Page gibt, wenn ja wird dieser zum telefonieren geöffnet, ansonsten ein neuer.
    ----------------------------------------------------------
    V 1.40
    ----------------------------------------------------------
    Es wird die FF.au3 V0.2.7.7b (oder höher) benötigt
    ----------------------------------------------------------

    - Ländervorwahl zum telefonieren ins Ausland in der GUI eingefügt.

    - Das Telefonbuch bekommt beim start den Focus und man kann mit den Pfeiltasten oder
    dem Wheel Rad der Maus Telefonpartner auswählen.

    - Die Farbe der GUI wird nun in der data.ini definiert.
    [GUI]
    StartColor=F0F8FF
    EndColor=A2B5CD
    Den Farbcode gibt´s hier
    ----------------------------------------------------------
    Update auf die neue Version.
    ----------------------------------------------------------
    data.ini umbenennen oder in einem anderen Ordner verschieben.
    "PeterZahlt FF" starten. (Die GUI ist erst einmal schwarz)
    Programm schließen und von der gesicherten data.ini die Daten in die neu generierte hereinkopieren...
    z.B.
    [MyData] und [Telbuch]
    ----------------------------------------------------------
    V 1.50
    Wichtig, wer selber kompilieren will, der muss in Zeile 41 den Pfad ändern.

    [autoit]


    ;-------------------------- Den Pfad zur Icon Datei ändern
    ; Nur den Pfad bis zum Komma ändern z.B. FileInstall("C:\Test\icon.icl",
    ;
    FileInstall("C:\Pfad\zur\Datei\icon.icl", @TempDir & "\PeterZahlt\icon.icl")
    ;
    ;-------------------------- Den Pfad zur Icon Datei ändern

    [/autoit]


    - Die zuletzt gewählte Telefonnummer wird beim schließen der GUI gespeichert (Wahlwiederholung)
    - Die Icon befinden sich nun in der Icon Bibliothek icon.icl (Auch die von TychoBarfy)
    Diese werden in die fertige PeterZahlt.exe mit einkompiliert (Include ) und unter ...Temp/PeterZahlt/icon.icl
    gespeichert.
    Angegeben werden diese in der data.ini unter:
    [GUI]
    Icon_g=1
    Icon_r=2

    3 und 4 sind dann die Icon von TychoBarfy
    [GUI]
    Icon_g=3
    Icon_r=4
    [Blockierte Grafik: http://img149.imageshack.us/img149/6441/iconrh7.jpg]

    - data.ini
    Ist diese z.B beim ersten start noch nicht vorhanden, wird nun eine unter Start==>Programme==>PeterZahlt erstellt.
    (Die GUI startet automatisch neu und man kann sofort loslegen..)
    Im Tray Menü kann man die data.ini dann unter Setup öffnen und bearbeiten. (noch ohne GUI)
    Nach dem schließen der ini startet die GUI neu.
    Die Reihenfolge der Daten in der ini sind [MyData] [Telbuch] [GUI]
    Daher kann man die alten Daten nach einem update schneller einpflegen..
    ----------------------------------------------------------

    Das Script:

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

    AutoIt Version: 3.2.6.0
    Author: Thunder-man

    Script Function:
    PeterZahlt - FF Version"
    FireFox Version
    V 1.00

    #ce ----------------------------------------------------------------------------
    #include <GUIConstants.au3>
    #include <GuiCombo.au3>
    #include <FF.au3>
    #include <Color.au3>
    Dim $Socket
    Opt("TrayMenuMode", 1) ; Default tray menu items (Script Paused/Exit) will not be shown.
    Opt("TrayOnEventMode", 1)
    Global $aNumber, $bNumber, $oIE, $Age, $gender, $o_form, $los, $a, $b, $c, $d, $Del_string = "", $Combo_TelN, $Tel_Name
    Dim $StartColor = 0x6ca6cd ;Color GUI
    Dim $EndColor = 0xD4D0C8 ;Color GUI

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

    If $CmdLine[0] > 0 Then
    $aNumber = $CmdLine[1]
    If $CmdLine[0] > 1 Then $bNumber = $CmdLine[2]
    If $CmdLine[0] > 2 Then $Age = $CmdLine[3]
    If $CmdLine[0] > 3 Then $gender = $CmdLine[4]
    _FireFox()
    EndIf
    ;====================== GUI ========================
    If $CmdLine[0] = 0 Then
    If Not FileExists(@ScriptDir & "\data.ini") Then
    IniWrite(@ScriptDir & "\data.ini", "MyData", "MyNumber", "1234567")
    IniWrite(@ScriptDir & "\data.ini", "MyData", "Age", "30")
    IniWrite(@ScriptDir & "\data.ini", "MyData", "gender", "m")
    IniWrite(@ScriptDir & "\data.ini", "Telbuch", "Peter", "02365202020") ; [Test]kann gelöscht werden
    IniWrite(@ScriptDir & "\data.ini", "Telbuch", "Erika", "02365212121") ; [Test]kann gelöscht werden
    EndIf

    $aNumber = IniRead(@ScriptDir & "\data.ini", "MyData", "MyNumber", "NotFound")
    $Age = IniRead(@ScriptDir & "\data.ini", "MyData", "Age", "NotFound")
    $gender = IniRead(@ScriptDir & "\data.ini", "MyData", "gender", "NotFound")

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

    #Region ### START Koda GUI section ###
    $Peter = GUICreate("PeterZahlt - FF Version", 249, 211, 331, 245)
    $los = GUICtrlCreateButton("los geht's", 108, 177, 55, 25, 0)
    $Group1 = GUICtrlCreateGroup("", 8, 8, 232, 161)
    $Lbl_EigeneN = GUICtrlCreateLabel("Eigene Nummer:", 18, 66, 81, 17)
    _BKColor(-1)
    $a = GUICtrlCreateInput($aNumber, 108, 64, 120, 21) ; My Number
    $Lbl_ZielN = GUICtrlCreateLabel("Ziel Nummer:", 18, 91, 81, 17)
    _BKColor(-1)
    $b = GUICtrlCreateInput("", 108, 87, 120, 21) ; Destination
    $Lbl_Age = GUICtrlCreateLabel("Alter:", 18, 116, 81, 17)
    _BKColor(-1)
    $c = GUICtrlCreateInput($Age, 108, 110, 120, 21) ; Age
    $Lbl_Gender = GUICtrlCreateLabel("Geschlecht:", 18, 140, 81, 17)
    _BKColor(-1)
    $d = GUICtrlCreateInput($gender, 108, 133, 120, 21) ; Gender
    $Lbl_TelBuch = GUICtrlCreateLabel("Telefonbuch:", 18, 32, 67, 17)
    _BKColor(-1)
    $Combo_TelN = GUICtrlCreateCombo("", 108, 28, 120, 25, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_SORT))
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Btn_Entry = GUICtrlCreateButton("eintragen", 7, 177, 55, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    XSkinGradient($Peter, $StartColor, $EndColor)
    ;---------- Set Tray Menu -----------------------
    TrayCreateItem("Exit")
    TrayItemSetOnEvent(-1, "Close")
    TraySetState()
    ;---------- Set Tray Menu -----------------------

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

    $var = IniReadSection(@ScriptDir & "\data.ini", "Telbuch")
    If @error Then
    MsgBox(4096, "", "Error occurred, probably no INI file.")
    Else
    For $i = 1 To $var[0][0]
    GUICtrlSetData($Combo_TelN, $var[$i][0])
    Next
    EndIf

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

    While 1
    _GUICtrlComboAutoComplete($Combo_TelN, $Del_string)
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $Combo_TelN
    $Tel_Name = GUICtrlRead($Combo_TelN)
    $Tel_Name_ini = IniRead(@ScriptDir & "\data.ini", "Telbuch", $Tel_Name, "NotFound")
    GUICtrlSetData($b, "")
    GUICtrlSetData($b, $Tel_Name_ini)
    Case $msg = $los
    $aNumber = GUICtrlRead($a)
    $bNumber = GUICtrlRead($b)
    $Age = GUICtrlRead($c)
    $gender = GUICtrlRead($d)
    If $gender = "m" Then
    $gender_send = 'aGender[0].checked=true'
    Else
    $gender_send = 'aGender[1].checked=true'
    EndIf
    _FireFox()
    Case $msg = $Btn_Entry
    _Entry()
    EndSelect
    WEnd
    EndIf
    ;====================== GUI =============================================
    Func _FireFox()
    $Socket = _FFStart ("http://www.peterzahlt.de/c2c-peterzahlt/index.do", "", Not ProcessExists("FireFox.exe"))
    If $Socket = -1 Then Exit
    Sleep(1000)
    $oObj = 'content.document.frmCall.'

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

    If Not _FFGetValueById ($Socket, "aAge") Then
    _FFClickImage ($Socket, "Angaben", "alt")
    _FFSetValueByName ($Socket, "aAge", $Age)
    _FFSetGet ($Socket, $oObj & $gender_send)
    Sleep(100)
    _FFClickImage ($Socket, "btn_submit.gif", "src")
    Sleep(100)
    _FFSetValueByName ($Socket, "aNumber", $aNumber)
    _FFSetValueByName ($Socket, "bNumber", $bNumber)
    _FFSetGet ($Socket, $oObj & 'submit()')
    Sleep(2000)
    AdlibEnable("_StateNoWait", 500)
    Else
    _FFSetValueByName ($Socket, "aNumber", $aNumber)
    _FFSetValueByName ($Socket, "bNumber", $bNumber)
    Sleep(100)
    _FFSetGet ($Socket, $oObj & 'submit()')
    Sleep(2000)
    AdlibEnable("_StateNoWait", 500)
    EndIf
    EndFunc ;==>_FireFox
    ;=======================================================================
    Func _StateNoWait()
    Local $find
    $find = _FFAction ($Socket, "find", "Bitte warten Sie, bis Ihr Telefon klingelt.")
    If $find Then
    Sleep(2000)
    _FFDisConnect($Socket)
    AdlibDisable()
    EndIf
    Sleep(1000)
    _StateWait()
    EndFunc
    ;=======================================================================
    Func _StateWait()
    Local $find
    $find = _FFAction ($Socket, "find", "Im Moment sind leider alle Leitungen belegt.")
    If $find Then
    TraySetIcon("red.ico")
    TraySetState(4)
    AdlibDisable()
    AdlibEnable("_StateWaitEnd", 500)
    EndIf
    EndFunc
    ;=======================================================================
    Func _StateWaitEnd()
    Local $find
    $find = _FFAction ($Socket, "find", "Automatischer Abbruch in") ;Vielen Dank für Ihre Geduld.
    If $find Then
    TraySetIcon("green.ico")
    TraySetState(8)
    Sleep(100)
    _FFClickImage ($Socket, "btn_callForFree2.gif", "src")
    _FFDisConnect($Socket)
    AdlibDisable()
    EndIf
    EndFunc
    ;=======================================================================
    ; ini Einträge
    Func _Entry()
    Local $read_Destination, $read_Combo
    $read_Destination = GUICtrlRead($b)
    $read_Combo = GUICtrlRead($Combo_TelN)
    If $read_Destination = "" Or $read_Combo = "" Then
    MsgBox(0, "Error", " Keine Einträge gefunden")
    Else
    IniWrite(@ScriptDir & "\data.ini", "Telbuch", $read_Combo, $read_Destination)
    _restart()
    EndIf
    EndFunc ;==>_Entry
    ;=======================================================================
    Func Close()
    Exit
    EndFunc ;==>Close
    ;=======================================================================
    ; Restart your program - Author UP_NORTH
    Func _restart()
    If @Compiled = 1 Then
    Run(FileGetShortName(@ScriptFullPath))
    Else
    Run(FileGetShortName(@AutoItExe) & " " & FileGetShortName(@ScriptFullPath))
    EndIf
    Exit
    EndFunc ;==>_restart
    ;=======================================================================
    ; XSkinGradient from XSkinGradient.au3
    Func XSkinGradient($nXSkinGUI, $nStartColor, $nEndColor)
    Local $nSize = WinGetClientSize($nXSkinGUI)
    Local $nX = 0, $nY = 0, $nWidth = $nSize[0], $nHeight = $nSize[1]
    Local $color1R = _ColorGetRed($nStartColor)
    Local $color1G = _ColorGetGreen($nStartColor)
    Local $color1B = _ColorGetBlue($nStartColor)
    Local $nStepR = (_ColorGetRed($nEndColor) - $color1R) / $nHeight
    Local $nStepG = (_ColorGetGreen($nEndColor) - $color1G) / $nHeight
    Local $nStepB = (_ColorGetBlue($nEndColor) - $color1B) / $nHeight
    $nGraph = GUICtrlCreateGraphic($nX, $nY, $nWidth, $nHeight)
    For $i = 0 To $nHeight - $nY
    $sColor = "0x" & StringFormat("%02X%02X%02X", $color1R + $nStepR * $i, $color1G + $nStepG * $i, $color1B + $nStepB * $i)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $sColor, 0xffffff)
    GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 0, $i)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, $nWidth, $i)
    Next
    GUICtrlSetState($nGraph, $GUI_DISABLE)
    Return $nGraph
    EndFunc ;==>XSkinGradient
    ;=======================================================================
    ; by Thunder-man
    Func _BKColor($GuiID)
    GUICtrlSetBkColor($GuiID, $GUI_BKCOLOR_TRANSPARENT)
    EndFunc ;==>_BKColor
    ;=======================================================================

    [/autoit]
  • @oliverh 
    Danke für die Warnung, aber ich denke bei "PeterZahlt" liegt der Fall anders.
    Alles spielt sich hier im Browser ab und ist exakt das, was der User auch über
    seine Tastatur und Maus erledigt.

    Ich habe deshalb bewusst nicht die Option angestellt, einen hidden
    Prozess zu nehmen, so das man nichts sehen würde, also auch keine Werbung...

    Aber man weiß ja nie, jeder sieht es anders...

    greeting
    Frank

    Einmal editiert, zuletzt von thunder-man (31. August 2007 um 16:33)

  • Stilgar

    Ich denke das mit dem Cookie ist doch kein Problem, oder?
    Kann man doch einfach schnell löschen, ich behalte eh nur Cookies die
    ich wirklich benötige.

    Und wenn kein Cookie da ist, sendet doch das "PeterZahlt - FF" Script
    alle benötigten Daten...

    greeting
    Frank

  • "PeterZahlt - FF Version" wie SMSGott?

    ich habe gerade auf der Peter HP gesehen, das man seine Tel. Nummer
    auch offiziell Bookmarken kann.

    Dabei gibt man seine Nummern ein und klickt unten den Link
    Nummern bookmarken.
    Das heißt dann, dieser Link macht das selbe wie mein Script.

    Ich hatte diesen langen Link anfänglich für meine IE Version genutzt

    $aNumber = "2365123456"
    $bNumber = "2365123678"
    $oIE= _IECreate('http://www.peterzahlt.de/c2c-peterzahlt/index.do?language=de&bCountryCode=49&aNumber=' & $aNumber & '&bNumber=' & $bNumber & '&language=de&callEnd=true')

    In diesem Sinne
    Frank

  • Ein paar Vorschläge noch:

    Evtl. die Fehlermeldungen noch abfangen wie z.B diese:
    "Mobilfunknummer werden derzeit nicht unterstützt ..."
    "Ihre Telefonnummer ist ungültig ..."

    Momentan wird ja auch bei einem Fehler auf das Klingeln gewartet, bis irgendein Timeout kommt.


    Und in der neuen FF.au3 gibt es nun auch ein _FFFormSubmit, damit könntest du nun schreiben:

    [autoit]

    _FFFormSubmit($Socket,"frmCall","name")

    [/autoit]


    Grüße
    Thorsten

  • Stilgar

    THX, ja das mit der Mobilfunknummer ist ne gute Idee.

    Und stimmt auf dem neusten Stand mit Deiner FF.au3 muss ich "PeterZahlt FF"
    auch noch bringen.
    Auf jeden Fall das Neue _FFFormSubmit und den neuen Start Modi.
    (Wollte erst mal warten, was sich noch ändert...)

    Wirst Du eventuell noch die FF.au3 um die MOZ_NO_REMOTE=1 erweitern,
    damit man 2 voneinander unabhänige Profile starten kann.
    (Wäre ja auch für "Hide Prozess" ganz sinnvoll) (Oder kann ich das extern...)

    Wie kann ich denn eigentlich die Prozess ID von einer neuen Browser
    Instanz abfragen, damit ich auch nur diese Instanz wieder beende und nicht
    alle Firefox Browser, oder geht das nicht.


    Na mal sehen, was noch kommt habe aber im Moment nicht ganz so viel Zeit, will mir einen VServer bestellen und ne HP basteln.

    Habe ne Menge Tools für Altiris SVS (Programm Virtualisierung) geschrieben.
    Diese will ich dann auf deutsch schreiben und unter anderen auf der HP
    bereitstellen.
    Kannst ja mal auf der Altiris HP unter suche Thunder-man eintippen ...


    Edit:
    Ok, das mit der Prozess ID ist ja einfacher zu handhaben als ich dachte.

    Habe zum testen 3 mal Notepad geöffnet. (Geschlossen wird aber nur die neue Instanz)

    [autoit]


    $PID = Run("Notepad.exe", "", @SW_MAXIMIZE)

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

    MsgBox(0, "", $PID)
    Sleep(10000)
    ProcessClose($PID)

    [/autoit]


    Edit:
    New V 1.50 (Siehe oben)

    2 Mal editiert, zuletzt von thunder-man (13. September 2007 um 15:26)

  • Habe ein Error mit dem FileInstall, "InvalidFileInstall() Funktion:"

    Starte ich das Script in SciTe, funnzt alles, aber ich kann es nicht
    kompilieren.

    Hat da jemand eine Idee?

    Edit:
    Ok, FileInstall funktioniert nur mit nem String als Pfad, nicht
    mit ner Variable. (Also beim kompilieren dran denken)

    Einmal editiert, zuletzt von thunder-man (13. September 2007 um 21:21)