Moin Community,
kennt ihr auch die Situation: Ihr wartet gerade auf eine Antwort in einem Thread und schaut immer wieder auf der Seite nach um zusehen ob schon jemand geantwortet hat...?
Damit sollte nun Schluss sein Mit dem Thread-Watcher könnt ihr z.Z. noch spezielle Threads auf Nachrichten automatisch überprüfen lassen. Wenn also eine Person euch auf ein Thema antwortet und ihr "beobachtet" es mit dem Programm, dann wird entweder per Tooltip oder MsgBox "1 neuer Post", ausgegeben. Das ganze wird vielleicht noch auf Threads erweitert.
Screen vom Gui: (Nach dem Klicken von "Check" verschwindet das Fenster. Kann jedoch im Traymenü wieder geöffnet werden..)
Fotoreihe:
Spoiler anzeigen
[Blockierte Grafik: http://epgc.spacequadrat.de/tw.JPG]
Link-Fenster: Hier kann der Link des Threads eingegeben werden.
[Blockierte Grafik: http://epgc.spacequadrat.de/settings.JPG]
Settings: Hier kann die Benachrichtigungsart eingestellt werden (MessageBox oder ToolTip); Zudem auch der Check-Intervall (wieoft das Script den Thread abfragt)
[Blockierte Grafik: http://epgc.spacequadrat.de/TrayMenu.jpg]
Das Traymenü: Schnelle Bedienung über dieses TrayMenü. Es kann der Link des Threads geändert werden, der aktuelle Thread im Inet-Explorer geöffnet werden.
[Blockierte Grafik: http://epgc.spacequadrat.de/thliste.JPG]
Die Thread-Liste: Zeigt alle vergangenen Threads an und lässt durch Doppelklick auf den entsprechenden, diesen beobachten.
!Wichtig!
Ihr benötigt, um das Script starten zu können, folgende UDF: (ModernMenuRaw.au3)
Seite der UDF: Hier
Direkterdownload: Hier
Wichtig für alle die den Updater benutzen! -> Die Version 1.0.3 installiert haben
Das Script oder das kompilierte Programm (Exe) muss, wenn es ausgeführt werden soll, im Installationsordner des Thread Watchers sein!
Version 1.0.3 ( 16. Dezember 08 ) :
Spoiler anzeigen
#include <Array.au3>
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\..\..\..\TW.ico
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
;*****************************************************************************
; Programmname: Thread Watcher
; Version: 1.0.3
;
; Author: Johannes Kneip
;
;*****************************************************************************
#include <String.au3>
#include <GUIConstantsEx.au3>
#include <Inet.au3>
#include <ModernMenuRaw.au3>
#include <ComboConstants.au3>
Opt("TrayMenuMode", 1)
[/autoit] [autoit][/autoit] [autoit];*** VARIABLEN ***;
Global $newestpage, $threadid, $tempsave_posts, $posts, $pages, $tempsave_pages, $tempsave_posts, $postssec, $refreshrate, $threadid[100], $checks = 0, $numallposts, $posternames, $withposter, $inspostsft
Dim $posts = 0
Dim $tempsave_posts = 0
Dim $container = 1
Dim $newestpage = ""
Dim $ver = "1.0.3"
Dim $i = 1
Dim $inipath = @ScriptDir & "\config.ini"
Dim $tempsave_clip = 10
Dim $posterl = ""
;
IniWrite($inipath, "Version", "V","1.0.3")
[/autoit] [autoit][/autoit] [autoit];*** Internet-Check ***;
$inetcheck = Ping("www.google.de")
If @error = 0 Then
Else
MsgBox(0, "Error", "Kein Internet verfügbar!", 5)
Exit
EndIf
;
;*** INI-Read ***;
[/autoit] [autoit][/autoit] [autoit]$refreshread = IniRead($inipath, "Main", "RefreshRate", "default")
If $refreshread = "default" Then
Dim $refreshrate = 60000
IniWrite($inipath, "Main", "RefreshRate", "60000")
Else
If $refreshread < 60000 Then
$refreshrate = 60000
Else
$refreshrate = $refreshread
EndIf
EndIf
;******
;*** GUI's ***;
;>* Check-Fenster *<;
$gui = GUICreate("Thread-Watcher - v1.0.3", 438, 38, 193, 125)
GUISetIcon(@ScriptDir & "\autoitdeicon.ico")
$threadlink = GUICtrlCreateInput("", 40, 8, 300, 21)
GUICtrlCreateLabel("Link:", 8, 11, 32, 18)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$checkbut = GUICtrlCreateButton("Check", 356, 7, 73, 24, 0)
GUISetState(@SW_SHOW)
;
;>* Thread-Liste *<;
[/autoit] [autoit][/autoit] [autoit]$guitl = GUICreate("Thread-Liste", 539, 331, 193, 125)
$ListView1 = GUICtrlCreateListView("Thread-Name|Kategorie|Posts|Letzter Post von|Datum", 0, 0, 537, 329)
GUICtrlSendMsg(-1, 0x101E, 0, 200)
GUICtrlSendMsg(-1, 0x101E, 1, 50)
GUICtrlSendMsg(-1, 0x101E, 2, 120)
GUICtrlSendMsg(-1, 0x101E, 3, 90)
GUISetState(@SW_HIDE, $guitl)
;
;>* Settings-GUI *<;
[/autoit] [autoit][/autoit] [autoit]$guiSet = GUICreate("Settings", 291, 128, 300, 216)
GUISetIcon(@ScriptDir & '\k-cm-system.ico')
GUICtrlCreateLabel("Benachrichtigung:", 16, 14, 107, 19)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$meboxradio = GUICtrlCreateRadio("MessageBox ", 128, 9, 81, 27)
$tooltipradio = GUICtrlCreateRadio("TrayTip", 216, 13, 73, 20)
GUICtrlCreateLabel("Check-Intervall:", 16, 46, 94, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Combo1 = GUICtrlCreateCombo("1.", 128, 44, 49, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "5.|10.|30")
GUICtrlCreateLabel("Minute(n)", 184, 46, 48, 17)
$setokbut = GUICtrlCreateButton("Ok", 112, 95, 65, 25, 0)
$Label4 = GUICtrlCreateLabel("Start:", 16, 74, 35, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$startold = GUICtrlCreateRadio("alter Link", 80, 72, 65, 17)
$startnew = GUICtrlCreateRadio("neuer Link", 168, 68, 73, 25)
GUISetState(@SW_HIDE, $guiSet)
;
;>* About *<;
[/autoit] [autoit][/autoit] [autoit]$guiabout = GUICreate("About", 324, 176, 246, 153)
GUISetIcon("shell32.dll", -171)
GUICtrlCreateLabel("Name: Thread Watcher", 16, 24, 116, 17)
GUICtrlCreateLabel("Version: 1.0.3", 16, 48, 69, 17)
GUICtrlCreateLabel("Comments:", 16, 96, 56, 17)
GUICtrlCreateLabel("Copyright by Johannes Kneip", 16, 72, 141, 17)
GUICtrlCreateLabel("-bei Bugs:", 80, 96, 51, 17)
GUICtrlCreateLabel("- im Forum melden", 136, 96, 89, 17)
GUICtrlCreateLabel("- email: autoit.report@web.de", 136, 112, 142, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$okbut = GUICtrlCreateButton("&OK", 88, 144, 76, 25)
$checkversionbut = GUICtrlCreateButton("Check Version", 168, 144, 82, 25, 0)
GUISetState(@SW_HIDE, $guiabout)
;
;*** INI-Read 2 ***;
$meshwread = IniRead($inipath, "Main", "MessageShow", "default")
If $meshwread = "default" Then
Dim $meshwtooltip = True
IniWrite($inipath, "Main", "MessageShow", "true")
GUICtrlSetState($tooltipradio, $GUI_CHECKED)
Else
If $meshwread = "true" Then
$meshwtooltip = True
GUICtrlSetState($tooltipradio, $GUI_CHECKED)
Else
$meshwtooltip = False
GUICtrlSetState($meboxradio, $GUI_CHECKED)
EndIf
EndIf
$linkread = IniRead($inipath, "Main", "Linklist", "default")
If $linkread <> "default" Then
GUICtrlSetData($threadlink, $linkread)
EndIf
;
;*** TRAY-Menü ***;
[/autoit] [autoit][/autoit] [autoit]$nTrayIcon1 = _TrayIconCreate("Thread Watcher v1.0.3", @ScriptDir & "\autoitdeicon.ico")
_TrayIconSetClick(-1, 16)
_TrayIconSetState()
$nTrayMenu1 = _TrayCreateContextMenu()
$nSideItem3 = _CreateSideMenu($nTrayMenu1)
_SetSideMenuText($nSideItem3, "TW - v1.0.3")
_SetSideMenuColor($nSideItem3, 0x00FFFF)
_SetSideMenuBkColor($nSideItem3, 0x802222)
_SetSideMenuBkGradColor($nSideItem3, 0x4477AA)
$TrayLinkOpen = _TrayCreateitem("Link ändern")
$TrayThread = _TrayCreateMenu("Thread")
$ThreadOpen = _TrayCreateItem("Öffnen", $TrayThread)
_TrayItemSetIcon(-1, "", 0)
$ThreadListe = _TrayCreateItem("Liste", $TrayThread)
_TrayItemSetIcon(-1, "", 0)
_TrayCreateItem("")
_TrayItemSetIcon(-1, "", 0)
$TrayOptions = _TrayCreateItem("Optionen")
_TrayCreateItem("")
_TrayItemSetIcon(-1, "", 0)
$TrayHelp = _TrayCreateItem("Hilfe")
_TrayItemSetIcon(-1, "", 0)
$TrayAbout = _TrayCreateItem("About")
_TrayItemSetIcon(-1, "", 0)
$TrayExit = _TrayCreateItem("Beenden")
_TrayItemSetIcon(-1, "", 0)
_TrayItemSetIcon($TrayThread, "shell32.dll", -15)
_TrayItemSetIcon($TrayLinkOpen, "shell32.dll", -239)
_TrayItemSetIcon($TrayOptions, "shell32.dll", -217)
_TrayItemSetIcon($TrayHelp, "shell32.dll", -24)
_TrayItemSetIcon($TrayAbout, "shell32.dll", -171)
_TrayItemSetIcon($TrayExit, "shell32.dll", -28)
GUICtrlSetState($TrayHelp, $GUI_DEFBUTTON)
Dim $nTrayIcon2 = 0
_TrayIconSetState()
[/autoit] [autoit][/autoit] [autoit]If $nTrayIcon2 > 0 Then _TrayIconDelete($nTrayIcon2)
;
Dim $check = 1
While 1
;MsgBox(1,"$checkbefore",$check)
$clipzal = _StringSplit(ClipGet(), "autoit.de/index.php?page=Thread&threadID=", 1)
If $clipzal[0] = "http://" Or $clipzal[0] = "www" Then
If $clipzal[1] <> $tempsave_clip Then
$check = 1
If $clipzal[1] = $threadid Then
Else
If $check = 1 Then
$mgb = MsgBox(4, "", "Link überwachen?")
If $mgb = 6 Then
$checks = 0
$threadid[1] = $clipzal[1]
GUICtrlSetData($threadlink, 'http://autoit.de/index.php?page=Thread&threadID=' & $threadid[1])
GUISetState(@SW_HIDE, $gui)
$tempsave_clip = $clipzal[1]
$newestpage = 'http://autoit.de/index.php?page=Thread&threadID=' & $threadid[1]
_Alib()
EndIf
If $mgb = 7 Then
$tempsave_clip = $clipzal[1]
$check = 0
EndIf
EndIf
EndIf
EndIf
EndIf
$msg = GUIGetMsg(1)
Switch $msg[0]
Case $GUI_EVENT_CLOSE, $TrayExit
If $msg[1] = $guiabout Then GUISetState(@SW_HIDE, $guiabout)
If $msg[1] = $guiSet Then GUISetState(@SW_HIDE, $guiSet)
If $msg[1] = $gui Then GUISetState(@SW_HIDE, $gui)
If $msg[1] = $guitl Then GUISetState(@SW_HIDE, $guitl)
If $msg[0] = $TrayExit Then Exit
Case $checkbut
$checks = 0
MsgBox(1, "", $linkread)
If $linkread = "default" Then
IniWrite($inipath, "Main", "Linklist", GUICtrlRead($threadlink))
EndIf
$newestpage = GUICtrlRead($threadlink)
$threadid = _StringSplit($newestpage, "&threadID=", 1)
If @error Then
MsgBox(1, "", "Kann den Thread nicht checken!")
Else
If Not @error Then
_Alib()
GUISetState(@SW_HIDE, $gui)
Else
MsgBox(1, "", "Link checken!")
EndIf
EndIf
Case $setokbut
$temp_refreshread = GUICtrlRead($Combo1)
If $temp_refreshread = "1." Then $refreshrate = 60000
If $temp_refreshread = "5." Then $refreshrate = 300000
If $temp_refreshread = "10." Then $refreshrate = 600000
If $temp_refreshread = "30." Then $refreshrate = 1800000
_Alib()
$setread = GUICtrlRead($tooltipradio)
If $setread = 1 Then
IniWrite($inipath, "Main", "MessageShow", "true")
Else
IniWrite($inipath, "Main", "MessageShow", "false")
EndIf
GUISetState(@SW_HIDE, $guiSet)
Case $ThreadOpen
$temp_read = GUICtrlRead($threadlink)
If $temp_read = "" Then
MsgBox(1, "", "Kein Link eingeben!")
Else
$IEC = ShellExecute($temp_read)
EndIf
Case $ThreadListe
_Inireadlist()
GUISetState(@SW_SHOW, $guitl)
Case $TrayHelp
ShellExecute("http://autoit.spacequadrat.de/Downloads/Thread-Watcher/Hilfe/komplett/")
Case $TrayAbout
GUISetState(@SW_SHOW, $guiabout)
Case $okbut
GUISetState(@SW_HIDE, $guiabout)
Case $checkversionbut
_UpdateCheck()
Case $TrayLinkOpen
GUISetState(@SW_SHOW, $gui)
Case $TrayOptions
GUISetState(@SW_SHOW, $guiSet)
EndSwitch
WEnd
;*** UDF's ***;
[/autoit] [autoit][/autoit] [autoit]Func _Check()
$ingetone = _INetGetSource($newestpage)
;test only
$test = _StringBetween($ingetone, '<p class="userName">', '<a href=')
$inspostsft = UBound($test); Anzahl der Posts in dem Thread
$p = 0
Global $posternames[$inspostsft]
For $p = 0 To $inspostsft - 1
$var = _StringBetween($test[$p], 'title="»', '«')
$posternames[$p] = $var[0]
Next
;_ArrayDisplay($posternames)
;ThreadName:
$temp_thn = _StringBetween($ingetone, '<title>', ' -')
;ThreadSection:
$temp_thc = _StringBetween($ingetone, '<title>' & $temp_thn[0] & " -", '-')
$tempsave_posts = $posts
$site = '<li><a href="index.php?page=Thread&threadID=' & $threadid[1] & '&pageNo='
$strsite = _StringBetween($ingetone, $site, '"')
$pages = (UBound($strsite) / 2) + 1
$newestpage = 'http://autoit.de/index.php?page=Thread&threadID=' & $threadid[1] & '&pageNo=' & $pages
$postssec = StringRegExp($ingetone, "messageNumber", 3)
$posts = UBound($postssec)
If $pages > 1 Then
$numallposts = ($pages - 1) * 20 + $posts
Else
If $pages = 1 Then
$numallposts = $posts
EndIf
EndIf
If $checks > 0 Then
$lastposter = $posternames[$inspostsft - 1]
If $posts > $tempsave_posts Then
If $container = 1 Then
$container = 0
Else
$Couposts = $posts - $tempsave_posts
If $meshwtooltip = True Then
If $withposter = True Then
$posterl = " von " & $lastposter
Else
$posterl = ""
EndIf
If $Couposts > 1 Then
TrayTip($Couposts & " neue Nachrichten!", " 2", 5, 0)
Else
TrayTip($Couposts & " neue Nachricht" & $posterl & "!", " 1", 5, 1)
EndIf
Else
If $Couposts > 1 Then
MsgBox(64, "", $Couposts & " neue Nachrichten!")
Else
MsgBox(64, "", $Couposts & " neue Nachricht" & $posterl & "!")
EndIf
$posterl = ""
EndIf
EndIf
EndIf
;ThreadLink|Postanzahl|Letzter Poster|Datum|ThreadName|ThreadSection
IniWrite($inipath, "Threads", $threadid[1], 'http://autoit.de/index.php?page=Thread&threadID=' & $threadid[1] & "|" & $numallposts & "|" & $lastposter & "|" & @MDAY & "." & @MON & "." & @YEAR & "|" & $temp_thn[0] & "|" & $temp_thc[0])
EndIf
;
$ingetone = ""
$checks = $checks + 1
EndFunc ;==>_Check
Func _Alib()
AdlibDisable()
AdlibEnable("_Check", $refreshrate)
EndFunc ;==>_Alib
Func _UpdateCheck()
InetGet("http://autoit.spacequadrat.de/Downloads/Thread-Watcher/update/update.txt", @TempDir & "\update.txt", 1, 0)
$file = FileOpen(@TempDir & "\update.txt", 0)
$line = FileReadLine($file, 1)
$line3 = FileReadLine($file, 3)
If $line = $ver Then
MsgBox(64, "", "Neuste Version: (" & $ver & ")")
FileClose($file)
FileDelete(@TempDir & "\update.txt")
Else
$newver = $line & "_" & $line3
MsgBox(64, "Update!", "Neuere Version verfügbar!")
$fg = MsgBox(4, "Updaten?", "Möchtest du die neuste Version downloaden?")
If $fg = 6 Then
InetGet("http://autoit.spacequadrat.de/Downloads/Thread-Watcher/" & $newver & "/" & $newver & ".au3", $line3, 1, 1)
FileClose($file)
FileDelete(@TempDir & "\update.txt")
EndIf
EndIf
EndFunc ;==>_UpdateCheck
Func _Inireadlist()
$var = IniReadSection($inipath, "Threads")
If @error Then
MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Noch keine Threads gespeichert!")
Else
For $i = 1 To $var[0][0]
$split = StringSplit($var[$i][1], "|")
GUICtrlCreateListViewItem($split[5] & "|" & $split[6] & "|" & $split[2] & "|" & $split[3] & "|" & $split[4], $ListView1)
Next
EndIf
EndFunc ;==>_Inireadlist
Anregungsliste / Wunschliste / Bugs:
von anno2008:
- [Blockierte Grafik: http://epgc.spacequadrat.de/checked.png] Linkliste in Ini speichern
- [Blockierte Grafik: http://epgc.spacequadrat.de/checked.png] Bug: Wenn das "Link-Fenster" geschlossen wird, schließt das ganze Programm.
- [Blockierte Grafik: http://epgc.spacequadrat.de/no.png] Settings von anfang an abfragen und dann ebenfall in Ini speichern und nur beim Wunsch auf Änderung neues Fenster aufrufen
- [Blockierte Grafik: http://epgc.spacequadrat.de/no.png] beim Aufrufen der Seite direkt an letzten Post springen
- [Blockierte Grafik: http://epgc.spacequadrat.de/no.png] das ganze auf Threads erweitern
von Oscar:
- [Blockierte Grafik: http://epgc.spacequadrat.de/checked.png] automatische URL-Übernahme aus der Zwischenablage
von Conan10:
- [Blockierte Grafik: http://epgc.spacequadrat.de/checked.png] Icons und Config in einen Ordner packen
von RR04:
- auf Versionsnummer achten
Ideen von mir:
- [Blockierte Grafik: http://epgc.spacequadrat.de/checked.png] Namen des Posters mit in die Nachrichtenanzeige einbauen. Beispiel: "1 neue Nachricht von Oscar"
Ich möchte nun eure Meinung und Kritik dazu. Aus seinen Fehlern lernt man ja, ich hoffe nur ich lerne nicht zuviel
Mfg
Jautois