Tray Option hinzufügen

  • Tag

    Ich hab gestern Nacht ein wenig rumprobiert und jetzt vorher noch, aber ich schaffs irgendwie nicht so ne Option in meine Tray einzubauen, mit dem ich ihn dazu bewege eine Funktion aufzurufen, welche überprüft ob in einem Forum neue Beiträge vorhanden sind. Momentan sieht mein Script so aus:

    Spoiler anzeigen
    [autoit]

    #include <String.au3>
    #include <inet.au3>
    #Include <Constants.au3>

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

    HotKeySet("!f", "_Search")
    TraySetIcon("info")

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

    While 1
    _Search()
    Sleep(600000)
    WEnd

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

    Func _Search()
    $Sourcecode = _InetGetSource("http://Server.Provider.ch/5is07a/forum/search.php?do=getnew")
    $Result = _StringBetween($Sourcecode, '<td class="thead" width="75%">', '</td>')
    If $Result = 0 then
    TrayTip("Keine neuen Beiträge", "Es gibt keine neuen Beiträge.", 10, 1)
    TraySetToolTip("Es gibt keine neuen Beiträge.")
    TraySetState(4)
    sleep(5000)
    TraySetState(8)

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

    Else
    If $Result[0] = "Thema / Autor" then
    $Bereich = _StringBetween($Sourcecode, '<span class="smallfont">Zeige Ergebnis', '>')
    $Anzahl = _StringBetween($Bereich[0], ' von ', '</span')

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

    If $Anzahl[0] = "1" then
    $Nachricht1 = "Es wurde "
    $Nachricht2 = " neuer Beitrag gefunden."
    $Nachricht3 = @CRLF & "Jetzt den neuen Beitrag anzeigen?"
    $Titel = "Neuer Beitrag"
    $Anzahl[0] = "ein"
    Else
    $Nachricht1 = "Es wurden "
    $Nachricht2 = " neue Beiträge gefunden."
    $Nachricht3 = @CRLF & "Jetzt die neuen Beiträge anzeigen?"
    $Titel = "Neue Beiträge"
    EndIf

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

    $Meldung = MsgBox(32+4, $Titel, $Nachricht1 & $Anzahl[0] & $Nachricht2 & $Nachricht3, 10)
    If $Meldung = 6 then
    If $Anzahl[0] = "ein" Then
    $Thread = _StringBetween($Sourcecode, '<a href="showthread.php?goto=newpost&amp;t=', '"')
    $Link = "http://Server.Provider.ch/5is07a/forum/showthread.php?goto=newpost&t=" & $Thread[0]
    Run('"C:\Programme\Mozilla Firefox\firefox.exe" ' & $Link)
    TrayTip("", "", "")
    Else
    Run('"C:\Programme\Mozilla Firefox\firefox.exe" http://Server.Provider.ch/5is07a/forum/search.php?do=getnew')
    TrayTip("", "", "")
    EndIf
    EndIf

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

    If $Meldung = 7 or -1 Then
    TrayTip($Titel, $Nachricht1 & $Anzahl[0] & $Nachricht2, 10, 1)
    TraySetToolTip($Nachricht1 & $Anzahl[0] & $Nachricht2)
    EndIf
    EndIf
    EndIf
    EndFunc

    [/autoit]

    Ich hab dann mal das Beispiel in mein Script integriert, aber hat trotzdem ned geklappt.

    Spoiler anzeigen
    [autoit]

    #Include <Constants.au3>
    #NoTrayIcon

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

    Opt("TrayMenuMode",1) ; Default tray menu items (Script Paused/Exit) will not be shown.

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

    $prefsitem = TrayCreateItem("Preferences")
    TrayCreateItem("")
    $aboutitem = TrayCreateItem("About")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Exit")

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

    TraySetState()

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

    While 1
    $msg = TrayGetMsg()
    Select
    Case $msg = 0
    ContinueLoop
    Case $msg = $prefsitem
    Msgbox(64, "Preferences:", "OS:" & @OSVersion)
    Case $msg = $aboutitem
    Msgbox(64, "About:", "AutoIt3-Tray-sample.")
    Case $msg = $exititem
    ExitLoop
    EndSelect
    WEnd

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

    Exit

    [/autoit]

    Klappt aber nicht so ganz. Zwar ist dann nachher die Option in der Tray da, jedoch passiert nichts, wenn ich darauf klicke. Nun, wie genau muss ich das machen, dass ich nachher in der Tray eine Option "Jetzt suchen" habe, welche die Funktion _Search aufruft.

    Konkret sah das so aus:

    [autoit][/autoit]
    Spoiler anzeigen
    [autoit]

    #include <String.au3>
    #include <inet.au3>
    #Include <Constants.au3>

    HotKeySet("!f", "_Search")
    TraySetIcon("info")

    Opt("TrayMenuMode",1) ; Default tray menu items (Script Paused/Exit) will not be shown.

    $prefsitem = TrayCreateItem("Preferences")
    TrayCreateItem("")
    $aboutitem = TrayCreateItem("About")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Exit")

    TraySetState()

    While 1
    $msg = TrayGetMsg()
    Select
    Case $msg = 0
    ContinueLoop
    Case $msg = $prefsitem
    Msgbox(64, "Preferences:", "OS:" & @OSVersion)
    Case $msg = $aboutitem
    Msgbox(64, "About:", "AutoIt3-Tray-sample.")
    Case $msg = $exititem
    ExitLoop
    EndSelect
    _Search()
    Sleep(600000)
    WEnd

    Func _Search()
    $Sourcecode = _InetGetSource("http://Server.Provider.ch/5is07a/forum/search.php?do=getnew")
    $Result = _StringBetween($Sourcecode, '<td class="thead" width="75%">', '</td>')
    If $Result = 0 then
    TrayTip("Keine neuen Beiträge", "Es gibt keine neuen Beiträge.", 10, 1)
    TraySetToolTip("Es gibt keine neuen Beiträge.")
    TraySetState(4)
    sleep(5000)
    TraySetState(8)

    Else
    If $Result[0] = "Thema / Autor" then
    $Bereich = _StringBetween($Sourcecode, '<span class="smallfont">Zeige Ergebnis', '>')
    $Anzahl = _StringBetween($Bereich[0], ' von ', '</span')

    If $Anzahl[0] = "1" then
    $Nachricht1 = "Es wurde "
    $Nachricht2 = " neuer Beitrag gefunden."
    $Nachricht3 = @CRLF & "Jetzt den neuen Beitrag anzeigen?"
    $Titel = "Neuer Beitrag"
    $Anzahl[0] = "ein"
    Else
    $Nachricht1 = "Es wurden "
    $Nachricht2 = " neue Beiträge gefunden."
    $Nachricht3 = @CRLF & "Jetzt die neuen Beiträge anzeigen?"
    $Titel = "Neue Beiträge"
    EndIf

    $Meldung = MsgBox(32+4, $Titel, $Nachricht1 & $Anzahl[0] & $Nachricht2 & $Nachricht3, 10)
    If $Meldung = 6 then
    If $Anzahl[0] = "ein" Then
    $Thread = _StringBetween($Sourcecode, '<a href="showthread.php?goto=newpost&amp;t=', '"')
    $Link = "http://Server.Provider.ch/5is07a/forum/showthread.php?goto=newpost&t=" & $Thread[0]
    Run('"C:\Programme\Mozilla Firefox\firefox.exe" ' & $Link)
    TrayTip("", "", "")
    Else
    Run('"C:\Programme\Mozilla Firefox\firefox.exe" http://Server.Provider.ch/5is07a/forum/search.php?do=getnew')
    TrayTip("", "", "")
    EndIf
    EndIf

    If $Meldung = 7 or -1 Then
    TrayTip($Titel, $Nachricht1 & $Anzahl[0] & $Nachricht2, 10, 1)
    TraySetToolTip($Nachricht1 & $Anzahl[0] & $Nachricht2)
    EndIf
    EndIf
    EndIf
    EndFunc

    [/autoit]
    [autoit][/autoit]

    2 Mal editiert, zuletzt von ahatius (26. April 2009 um 17:35)

  • Hy,
    Bin zwar ein absoluter Anfänger, hoffe aber das mein Beispiel dir weiterhilft.
    Wenn du es bei dir anpasst, sollte es funktionieren.
    Vielleicht kann einer der erfahrenen User das bestätigen.

    Mfg Diggidie

    [autoit]


    #NoTrayIcon
    Opt("TrayOnEventMode",1)
    Opt("TrayMenuMode",1)

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

    TrayCreateItem("Beenden")
    TrayItemSetOnEvent(-1,"_Programm_beenden")
    TraySetState()

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

    While 1
    Sleep (10)
    WEnd

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

    Func _Programm_beenden()
    Exit
    EndFunc

    [/autoit]
  • Diggidie Da fehl das TrayCreateMenu

    @ahatius

    Spoiler anzeigen
    [autoit]

    #include <String.au3>
    #include <inet.au3>
    #Include <Constants.au3>

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

    HotKeySet("!f", "_Search")

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

    Opt("TrayMenuMode",1) ; Default tray menu items (Script Paused/Exit) will not be shown.

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

    $prefsitem = TrayCreateItem("Preferences")
    TrayCreateItem("")
    $aboutitem = TrayCreateItem("About")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Exit")
    TraySetIcon("info")
    TraySetState()

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

    While 1
    $msg = TrayGetMsg()
    Select
    Case $msg = $prefsitem
    _Search()
    Case $msg = $aboutitem
    Msgbox(64, "about:", "AutoIt3-Tray-sample.")
    Case $msg = $exititem
    ExitLoop
    EndSelect
    WEnd

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

    Func _Search()
    $Sourcecode = _InetGetSource("http://Server.Provider.ch/5is07a/forum/search.php?do=getnew")
    $Result = _StringBetween($Sourcecode, '<td class="thead" width="75%">', '</td>')
    If $Result = 0 then
    TrayTip("Keine neuen Beiträge", "Es gibt keine neuen Beiträge.", 10, 1)
    TraySetToolTip("Es gibt keine neuen Beiträge.")
    TraySetState(4)
    sleep(5000)
    TraySetState(8)

    Else
    If $Result[0] = "Thema / Autor" then
    $Bereich = _StringBetween($Sourcecode, '<span class="smallfont">Zeige Ergebnis', '>')
    $Anzahl = _StringBetween($Bereich[0], ' von ', '</span')

    If $Anzahl[0] = "1" then
    $Nachricht1 = "Es wurde "
    $Nachricht2 = " neuer Beitrag gefunden."
    $Nachricht3 = @CRLF & "Jetzt den neuen Beitrag anzeigen?"
    $Titel = "Neuer Beitrag"
    $Anzahl[0] = "ein"
    Else
    $Nachricht1 = "Es wurden "
    $Nachricht2 = " neue Beiträge gefunden."
    $Nachricht3 = @CRLF & "Jetzt die neuen Beiträge anzeigen?"
    $Titel = "Neue Beiträge"
    EndIf

    $Meldung = MsgBox(32+4, $Titel, $Nachricht1 & $Anzahl[0] & $Nachricht2 & $Nachricht3, 10)
    If $Meldung = 6 then
    If $Anzahl[0] = "ein" Then
    $Thread = _StringBetween($Sourcecode, '<a href="showthread.php?goto=newpost&amp;t=', '"')
    $Link = "http://Server.Provider.ch/5is07a/forum/showthread.php?goto=newpost&t=" & $Thread[0]
    Run('"C:\Programme\Mozilla Firefox\firefox.exe" ' & $Link)
    TrayTip("", "", "")
    Else
    Run('"C:\Programme\Mozilla Firefox\firefox.exe" http://Server.Provider.ch/5is07a/forum/search.php?do=getnew')
    TrayTip("", "", "")
    EndIf
    EndIf

    If $Meldung = 7 or -1 Then
    TrayTip($Titel, $Nachricht1 & $Anzahl[0] & $Nachricht2, 10, 1)
    TraySetToolTip($Nachricht1 & $Anzahl[0] & $Nachricht2)
    EndIf
    EndIf
    EndIf
    EndFunc

    [/autoit]

    So sollte es klappen. Das Problem war die Zeile mit dem Sleep und Search. Du musst einen Timer einbauen der alle 60 sek. die Funktion ausführt und nicht den Befehl Sleep verwenden, da sonst der ganze Skript "schläft".

    MfG
    Conan (Nur Mitlesend)
    Schon lange dabei

    4 Mal editiert, zuletzt von Conan10 (26. April 2009 um 17:05)

  • @ Conan10

    Schön das wir uns einig sind.
    Bin selbst absoluter Anfänger, konnte aber bisher fast alle meine
    Problem mit der Hilfe lösen, genauso so wie mit der Su-FU und
    den vielen Beiträgen hier. Stöbern lohnt sich.

    Mfg Diggidie