#Include "C:\AutoIt\autoit-v3\com\Include\guiconstants.au3" #include "C:\AutoIt\autoit-v3\com\Include\IE.au3" #include "C:\AutoIt\autoit-v3\com\Include\Array.au3" #include "C:\AutoIt\autoit-v3\com\Include\Date.au3" #include "C:\AutoIt\autoit-v3\com\Include\GUIListView.au3" #include "C:\AutoIt\autoit-v3\com\Include\GUICombo.au3" If Not @Compiled Then AutoItSetOption("TrayIconDebug", 1) #region TODO-LIST #cs - automatisches Update - Platzhaltergrafiken falls Bilder nicht geladen werden können - Links - Danksagung - Diagramme der Statistik von winti-wetter.ch #ce #endregion #region Constants ;Element Konstanten Global Const $WW_ELEMENT_DATUM = 0 Global Const $WW_ELEMENT_ZEIT = 1 Global Const $WW_ELEMENT_TEMP = 2 Global Const $WW_ELEMENT_FEUCHTE = 3 Global Const $WW_ELEMENT_DRUCK = 4 Global Const $WW_ELEMENT_REGENMENGE = 5 Global Const $WW_ELEMENT_WIND = 6 Global Const $WW_ELEMENT_WINDRICHTUNG_WORT = 7 Global Const $WW_ELEMENT_WINDRICHTUNG_GRAD = 8 Global Const $WW_ELEMENT_SONNE = 9 Global Const $WW_ELEMENT_HELLIGKEIT = 10 Global Const $WW_ELEMENT_REGENDAUER = 11 Global Const $WW_ELEMENT_SOLAR = 12 Global Const $li1 = "Temperatur Aussen" Global Const $li2 = "Luftfeuchte Aussen" Global Const $li3 = "Luftfdruck" Global Const $li4 = "Regenmenge l/m²" Global Const $li5 = "Bodentemperatur" Global Const $li6 = "Regendauer Min." Global Const $li7 = "Windgeschwindigkeit km/h" Global Const $li8 = "Windrichtung" Global Const $li9 = "Helligkeit" Global Const $li10 = "Solarstrahlung" Global Const $li11 = "Taupunkt" Global Const $li12 = "Sonnenscheindauer h" Global Const $li13 = "Windchill Temperatur" Global Const $li14 = "Wolkenuntergrenze" Global Const $tab_selected_webcam = 0 Global Const $tab_selected_wetterdaten = 1 Global Const $tab_selected_diagram = 2 Global Const $tab_selected_sonnemond = 3 Global Const $tab_selected_radar = 4 #endregion Constants #region Globals Global $main_gui, $wc_pic, $btn_older_wc, $btn_newer_wc #endregion Globals Global $webcam_image = @TempDir & "\Webcam.jpg" Global $gui_title = "Winti-Wetter" Global $software_name = "Winti Wetter Monitor" Global $24h_image = @TempDir & "\24h.gif" Global $radar_image = @TempDir & "\radar.gif" #region GUI Definitionen $main_gui = GUICreate($gui_title, 900, 700, -1, -1, BitOr($WS_DLGFRAME, $WS_SYSMENU)) ;~ _Debug($main_gui) $lblTitel = GUICtrlCreateLabel($software_name, 5, 5, 300, 30) GUICtrlSetFont($lblTitel, 16, 600) $btn_update = GUICtrlCreateButton("Update", 835, 5, 55, 30) ;~ SplashTextOn("Bitte warten - aktualisiere Webcam", "Bitte warten. Der Monitor lädt das aktuelle Webcam Bild herunter.", 640, 48) Update_Pictures(1) ;~ SplashOff() #region Tabs $tabs = GUICtrlCreateTab( 5, 40, 890, 640) #region TAB-Webcam $tab_webcam = GUICtrlCreateTabItem( "Webcam" ) $LEFT = 70 $TOP = 100 $btn_newer_wc = GUICtrlCreateButton("<-", $LEFT, $TOP, 50, 480, $BS_FLAT) GUICtrlSetTip(-1, "Zeigt das um eine Stunde neuere Webcam Bild an") $LEFT = $LEFT + 55 $pic_webcam = GUICtrlCreatePic($webcam_image, $LEFT, $TOP, 640, 480) $LEFT = $LEFT + 645 $btn_older_wc = GUICtrlCreateButton("->", $LEFT, $TOP, 50, 480, $BS_FLAT) GUICtrlSetTip(-1, "Zeigt das um eine Stunde ältere Webcam Bild an") GUICtrlSetState($btn_newer_wc, $GUI_DISABLE) $wc_pic = 0 $TOP = $TOP + 490 $LEFT = $LEFT - 700 $lbl_Stunde = GUICtrlCreateLabel("Webcam Zeigt aktuelles Bild.", $LEFT, $TOP, 250, 20) $TOP = $TOP + 30 $list_webcam = GUICtrlCreateCombo("", $LEFT, $TOP, 200, 20, $CBS_DROPDOWNLIST) $list_hours = "" For $i = 1 to 23 $list_hours = $list_hours & "vor " & $i & " Stunden|" If $i = 1 Then $list_hours = StringTrimRight($list_hours, 2) $list_hours = $list_hours & "|" ElseIf $i = 23 Then $list_hours = StringTrimRight($list_hours, 1) EndIf Next $list = "aktuell|" & $list_hours GUICtrlSetData($list_webcam, $list) _GUICtrlComboSetCurSel($list_webcam,0) #endregion TAB-Webcam #region TAB-Wetterdaten $tab_wetterdaten = GUICtrlCreateTabItem("Wetterdaten") $listview_daten = GUICtrlCreateListView("Datum|Zeit|Temparatur|Luftfeuchtigkeit|Luftdruck|Regenmenge|Windgeschwindigkeit|Windrichtung|Windrichtung in °|Sonnenscheindauer|Helligkeit|Regendauer|Solarstrahlung", 10, 70, 880, 600) ;~ $wetterdaten = GetWetterdaten() ;$wetterdaten = _ArrayToString($wetterdaten, "|") ;$wetterdaten = StringTrimRight($wetterdaten, 2) ;ConsoleWrite($wetterdaten[0][5]) ;ConsoleWrite("Dim 1: " & UBound($wetterdaten, 1) & @CRLF & "Dim 2: " & UBound($wetterdaten, 2)) ;~ For $i = 1 to UBound($wetterdaten, 2) - 30 ;~ $wetterdaten_temp = "" ;~ For $j = 0 to UBound($wetterdaten, 1) - 1 ;~ $wetterdaten_temp = $wetterdaten_temp & $wetterdaten[$j][$i] & "|" ;ConsoleWrite($wetterdaten[$j][$i] & @CRLF) ;~ Next ;ConsoleWrite("Linie: $i = " & $wetterdaten_temp & @CRLF) $wetterdaten_temp = "Klicke auf Update||||||||||||" GUICtrlCreateListViewItem($wetterdaten_temp, $listview_daten) ;~ Next #endregion TAB-Wetterdaten #region TAB-24h $LEFT = 70 $TOP = 100 $tab_24h = GUICtrlCreateTabItem( "Diagramme") $pic_24h = GUICtrlCreatePic($24h_image, $LEFT, $TOP, 752, 412) $lbl_minigrafiken = GUICtrlCreateLabel("Minigrafiken anzeigen:", $LEFT, 412 + $TOP + 5, 200, 20) $list_minigrafiken = GUICtrlCreateCombo("", $LEFT, $TOP + 442, 200, 20, $CBS_DROPDOWNLIST) $list = $li1 & "|" & $li2 & "|" & $li3 & "|" & $li4 & "|" & $li5 & "|" & $li6 & "|" & $li7 & "|" & $li8 & "|" & $li9 & "|" & $li10 & "|" & $li11 & "|" & $li12 & "|" & $li13 & "|" & $li14 GUICtrlSetData($list_minigrafiken, $list) $btn_minigrafik_anzeigen = GUICtrlCreateButton("Anzeigen", $LEFT + 205, $TOP + 442, 100, 20) #endregion TAB-24h #region TAB-SonneMond $tab_sonnemond = GUICtrlCreateTabItem("Sonne und Mond") $lbl_mond = GUICtrlCreateLabel("Mond:", 15, 70, 770, 25) GUICtrlSetFont(-1, 20, 800) Dim $array_sun_values[5] Dim $array_moon_values[9] $monddaten = GetMondDaten() $sonnendaten = GetSonneDaten() $TOP = 105 For $i = 0 to 3 GUICtrlCreateLabel($monddaten[0][$i] & ":", 15, $TOP, 250, 25) GUICtrlSetFont(-1, 16, 400) $array_moon_values[$i] = GUICtrlCreateLabel($monddaten[1][$i], 270, $TOP, 500, 25) GUICtrlSetFont(-1, 16, 400) $TOP = $TOP + 30 Next For $i = 4 to 8 GUICtrlCreateLabel($monddaten[1][$i] & ":", 15, $TOP, 250, 25) GUICtrlSetFont(-1, 16, 400) If $i = 4 Then $monddaten[2][$i] = StringTrimLeft($monddaten[2][$i], 2) $array_moon_values[$i] = GUICtrlCreateLabel($monddaten[2][$i], 270, $TOP, 500, 25) GUICtrlSetFont(-1, 16, 400) $TOP = $TOP + 30 Next $lbl_sonne = GUICtrlCreateLabel("Sonne:", 15, $TOP + 5, 770, 25) GUICtrlSetFont(-1, 20, 800) $TOP = $TOP + 35 For $i = 1 to 4 GUICtrlCreateLabel($sonnendaten[0][$i] & ":", 15, $TOP, 250, 25) GUICtrlSetFont(-1, 16, 400) $array_sun_values[$i] = GUICtrlCreateLabel($sonnendaten[1][$i], 270, $TOP, 500, 25) GUICtrlSetFont(-1, 16, 400) $TOP = $TOP + 30 Next #endregion #region TAB-Radar-ETH $tab_radar = GUICtrlCreateTabItem("ETH-Regenradar") FileInstall("C:\AutoIt\Repository\radar_offline.gif", @TempDir & "\radar.gif", 11) $radarbild = GUICtrlCreatePic($radar_image, 70, 70, 750, 600) #endregion #region TAB-Prognose $tab_prognose = GUICtrlCreateTabItem("SMA - Wetterprognose") $lbl_prognose = GUICtrlCreateLabel(GetSMAPrognose(), 30, 30, 700, 350) _INetGet_w_Progress("http://www.meteoschweiz.ch/data/wetterkarten/ch_progkarte_de.gif", @TempDir & "\Prognose_ch.gif", 1) $pic_prognose = GUICtrlCreatePic(@TempDir & "\Prognose_ch.gif", 30, 380, 350, 232) $lbl_click_picture = GUICtrlCreateLabel("Klicke auf das Bild um es in Originalgrösse zusehen", 30, 620, 500, 20) $btn_aussichten = GUICtrlCreateButton("Weitere Aussichten", 30, 650, 120, 20) #region TAB-Links $tab_links = GUICtrlCreateTabItem("Links") $TOP = 140 $lbl_links = GUICtrlCreateLabel("Links", 70, $TOP, 500, 50) GUICtrlSetFont(-1, 25, 600) $lbl_web_ww = GUICtrlCreateLabel("http://www.winti-wetter.ch", 70, $TOP + 60, 400, 50) GUICtrlSetTip(-1, "Die meisten Daten stammen von Hier") GUICtrlSetFont(-1, 23, 600, 4) GUICtrlSetColor(-1,0x0000ff) $lbl_web_ethz = GUICtrlCreateLabel("http://www.radar.ethz.ch", 70, $TOP + 120, 400, 50) GUICtrlSetTip(-1, "Das Radarbild stammt von Hier") GUICtrlSetFont(-1, 23, 600, 4) GUICtrlSetColor(-1,0x0000ff) $lbl_web_nobrain = GUICtrlCreateLabel("http://nobrain.ch", 70, $TOP + 180, 400, 50) GUICtrlSetTip(-1, "Hier findet man Updates zu diesem Programm - Homepage des Authors") GUICtrlSetFont(-1, 23, 600, 4) GUICtrlSetColor(-1,0x0000ff) $lbl_web_autoit = GUICtrlCreateLabel("http://www.autoitscript.com", 70, $TOP + 240, 400, 50) GUICtrlSetTip(-1, "Hier findet man AutoIt eine grossartige BASIC-ähnliche Programmiersprache für Windows (Freeware)") GUICtrlSetFont(-1, 23, 600, 4) GUICtrlSetColor(-1,0x0000ff) $lbl_web_sma = GUICtrlCreateLabel("http://www.meteoschweiz.ch", 70, $TOP + 300, 400, 50) GUICtrlSetTip(-1, "Hier findet man die Homepage der Schweizerischen Meteorologischen Anstalt (Meteoschweiz)") GUICtrlSetFont(-1, 23, 600, 4) GUICtrlSetColor(-1,0x0000ff) #endregion #region TAB-Danksagung $tab_dank = GUICtrlCreateTabItem("Dank") GUICtrlCreateLabel("Danke!", 70, 70, 800, 60) GUICtrlSetFont(-1, 30, 800) GUICtrlCreateLabel("Ich möchte mich an dieser Stelle ganz herzlich bei den beiden grossartigen Webseiten bedanken ohne die dieses kleine, feine Tool nicht möglich gewesen wären. Vorallem bei www.winti-wetter.ch (siehe auch Links) bediene ich mich der aufgelisteten Wetterdaten, sowie den Grafiken. Ich finde diese Page einfach grossartig. Wollte aber ein kleines handlicheres Tool haben und einwenig mit den Webfunktionen von AutoIt experimentieren, weshalb ich dieses Programm geschrieben habe." & @CRLF & "Weiter Danke an die Leute bei der ETH welche den Dopplerradar für die Alpennordseite, sowie den Nahbereich Zürich auf ihrer Webseite präsentieren (www.radar.ethz.ch - siehe auch Links). Eine ganz interessante Ansicht von Regenwetter zu Zeiten der Sommergewitter." & @CRLF & "Die Prognosen stammen von der Schweizerischen Meteorologischen Anstalt, und entsprechen den offiziellen Wetterprognosen welche man auch im Radio höhren kann." & @CRLF & "Ebenfalls Dank gebührt allen welche die grossartige Programmiersprache AutoIt entwickelt haben. Ohne dass wäre dies hier niemals möglich gewesen.", 70, 140, 800, 400) GUICtrlSetFont(-1, 16, 400) #endregion GUICtrlCreateTabItem( "" ) #endregion Tabs #endregion GUI Definitionen GUISetState();@SW_SHOWDEFAULT, $main_gui) While 1 $gui_msg = GUIGetMsg() If $gui_msg = $GUI_EVENT_CLOSE Then ExitLoop If $gui_msg = $btn_update Then Update_Pictures(0) If $gui_msg = $btn_minigrafik_anzeigen Then ShowMinigraphic(GUICtrlRead($list_minigrafiken)) If $gui_msg = $btn_newer_wc Then $wc_pic = $wc_pic - 1 If $wc_pic > 0 Then GUICtrlSetState($btn_newer_wc, $GUI_ENABLE) Else GUICtrlSetState($btn_newer_wc, $GUI_DISABLE) EndIf If $wc_pic < 23 Then GUICtrlSetState($btn_older_wc, $GUI_ENABLE) Else GUICtrlSetState($btn_older_wc, $GUI_DISABLE) EndIf If Not ($wc_pic = 0) Then $wc_url = "http://www.winti-wetter.ch/webcam/axis" & $wc_pic & ".jpg" GUICtrlSetData($lbl_Stunde, "Webcam zeigt Bild von vor " & $wc_pic & " Stunde(n).") Else $wc_url = "http://www.winti-wetter.ch/axis.jpg" GUICtrlSetData($lbl_Stunde, "Webcam zeigt aktuelles Bild.") EndIf _GUICtrlComboSetCurSel($list_webcam,$wc_pic) _InetGet_w_Progress($wc_url, $webcam_image, 1) GUICtrlSetImage($pic_webcam, $webcam_image) EndIf If $gui_msg = $pic_prognose Then ShowPrognoseKarte() If $gui_msg = $btn_aussichten Then ShowAussichten() If $gui_msg = $btn_older_wc Then $wc_pic = $wc_pic + 1 If $wc_pic > 0 Then GUICtrlSetState($btn_newer_wc, $GUI_ENABLE) Else GUICtrlSetState($btn_newer_wc, $GUI_DISABLE) EndIf If $wc_pic < 23 Then GUICtrlSetState($btn_older_wc, $GUI_ENABLE) Else GUICtrlSetState($btn_older_wc, $GUI_DISABLE) EndIf If Not ($wc_pic = 0) Then $wc_url = "http://www.winti-wetter.ch/webcam/axis" & $wc_pic & ".jpg" GUICtrlSetData($lbl_Stunde, "Webcam zeigt Bild von vor " & $wc_pic & " Stunde(n).") Else $wc_url = "http://www.winti-wetter.ch/axis.jpg" GUICtrlSetData($lbl_Stunde, "Webcam zeigt aktuelles Bild.") EndIf _GUICtrlComboSetCurSel($list_webcam,$wc_pic) _InetGet_w_Progress($wc_url, $webcam_image, 1) GUICtrlSetImage($pic_webcam, $webcam_image) EndIf If $gui_msg = $list_webcam Then $selected_campicture = _GUICtrlComboGetCurSel($list_webcam) $wc_pic = $selected_campicture If $wc_pic > 0 Then GUICtrlSetState($btn_newer_wc, $GUI_ENABLE) Else GUICtrlSetState($btn_newer_wc, $GUI_DISABLE) EndIf If $wc_pic < 23 Then GUICtrlSetState($btn_older_wc, $GUI_ENABLE) Else GUICtrlSetState($btn_older_wc, $GUI_DISABLE) EndIf If Not ($wc_pic = 0) Then $wc_url = "http://www.winti-wetter.ch/webcam/axis" & $wc_pic & ".jpg" GUICtrlSetData($lbl_Stunde, "Webcam zeigt Bild von vor " & $wc_pic & " Stunde(n).") Else $wc_url = "http://www.winti-wetter.ch/axis.jpg" GUICtrlSetData($lbl_Stunde, "Webcam zeigt aktuelles Bild.") EndIf _InetGet_w_Progress($wc_url, $webcam_image, 1) GUICtrlSetImage($pic_webcam, $webcam_image) EndIf Select Case $gui_msg = $lbl_web_ww _IENavigate(_IECreate(1), "http://www.winti-wetter.ch") Case $gui_msg = $lbl_web_ethz _IENavigate(_IECreate(1), "http://www.radar.ethz.ch") Case $gui_msg = $lbl_web_nobrain _IENavigate(_IECreate(1), "http://nobrain.ch") Case $gui_msg = $lbl_web_autoit _IENavigate(_IECreate(1), "http://www.autoitscript.com") Case $gui_msg = $lbl_web_sma _IENavigate(_IECreate(1), "http://www.sma.ch") EndSelect Sleep( 50 ) WEnd Shutdown_Monitor() Exit Func _Debug($text, $titel="Debug") MsgBox(0, $titel, ">" & $text & "<") EndFunc Func _INetGet_w_Progress($url, $local, $reload="1") ;~ _Debug("WOuld get the picture") Local $dnl_size, $sucess, $gui, $lbl_description, $progressbar, $lbl_dnl_size, $dnl_size_mb, $InetGetBytes_MB $gui = GUICreate("Herunterladen von: " & $url, 400, 120, -1, -1, $WS_DLGFRAME,$WS_EX_TOPMOST) $lbl_description = GUICtrlCreateLabel("Lade " & $url & " nach " & $local & " herunter...", 5, 5, 390, 30) $progressbar = GUICtrlCreateProgress(5, 40, 390, 30) $lbl_dnl_size = GUICtrlCreateLabel("Ermittle Downloadgrösse...", 5, 75, 390, 30) GUISetState() $dnl_size = InetGetSize($url) If Not @Error Then $dnl_size_mb = StringTrimRight(String($dnl_size / 1048576),StringLen(String($dnl_size / 1048576)) - 3) If @error Then _Debug("Fehler beim ermitteln der Downloadgrösse von " & $url & @CRLF & "Die Anwendung wird beendet.", "Fehler bei Downloadgrössen ermittlung") Exit 0 EndIf GUICtrlSetData($lbl_dnl_size, "Downloadgrösse: " & $dnl_size_mb & " MB") $sucess = InetGet($url, $local, $reload, 1) If Not $sucess Then _Debug("Fehler beim herunterladen von " & $url & " nach " & $local & @CRLF & "Die Anwendung wird beendet.", "Fehler beim herunterladen") Exit 0 EndIf $timeoutcount = 0 While @InetGetActive If @InetGetBytesRead = 0 Then $timeoutcount = $timeoutcount + 1 $InetGetBytes_MB = StringTrimRight(String(@INetGetBytesRead / 1048576),StringLen(String(@INetGetBytesRead / 1048576)) - 3) GUICtrlSetData($progressbar, (@InetGetBytesRead / $dnl_size) * 100) GUICtrlSetData($lbl_dnl_size, $InetGetBytes_MB & " von " & $dnl_size_mb & "MB heruntergeladen...") Sleep(100) If $timeoutcount = 30 Then SetError(1) ExitLoop EndIf WEnd Else MsgBox(0, "Fehler","Konnte Downloadgrösse nicht ermitteln") EndIf ;~ Sleep(2000) GUIDelete($gui) Return 1 EndFunc Func Shutdown_Monitor() GUIDelete($main_gui) If FileExists($webcam_image) Then FileDelete($webcam_image) EndFunc Func Update_Pictures($init) If $init Then _InetGet_w_Progress("http://www.winti-wetter.ch/axis.jpg",$webcam_image,1) _InetGet_w_Progress("http://www.winti-wetter.ch/aktuell.gif",$24h_image,1) ;_InetGet_w_Progress("http://www.radar.ethz.ch/aktuell/ppi_aktuell_nah.gif",$radar_image,1) $wc_pic = 0 GUICtrlSetState($btn_newer_wc, $GUI_DISABLE) GUICtrlSetState($btn_older_wc, $GUI_ENABLE) Else $selected_tab = GUICtrlRead($tabs) GUISetState(@SW_DISABLE, $main_gui) Select Case $selected_tab = $tab_selected_webcam _InetGet_w_Progress("http://www.winti-wetter.ch/axis.jpg",$webcam_image,1) $wc_pic = 0 GUICtrlSetState($btn_newer_wc, $GUI_DISABLE) GUICtrlSetState($btn_older_wc, $GUI_ENABLE) GUICtrlSetImage($pic_webcam, $webcam_image) GUICtrlSetData($lbl_Stunde, "Webcam zeigt aktuelles Bild.") _GUICtrlComboSetCurSel($list_webcam, $wc_pic) Case $selected_tab = $tab_selected_wetterdaten $wetterdaten = GetWetterDaten() SplashTextOn("Liste Daten auf", "Liste empfangene Daten auf", 250, 50) _GUICtrlListViewDeleteAllItems($listview_daten) GUICtrlSetState($listview_daten, $GUI_HIDE) For $i = 1 to UBound($wetterdaten, 2) - 30 $wetterdaten_temp = "" For $j = 0 to UBound($wetterdaten, 1) - 1 $wetterdaten_temp = $wetterdaten_temp & $wetterdaten[$j][$i] & "|" ;ConsoleWrite(@TAB & "Element $j = " & $j & @CRLF) Next ;ConsoleWrite("Linie: $i = " & $i & @CRLF) $wetterdaten_temp = StringTrimRight($wetterdaten_temp, 1) GUICtrlCreateListViewItem($wetterdaten_temp, $listview_daten) Next GUICtrlSetState($listview_daten, $GUI_SHOW) SplashOff() Case $selected_tab = $tab_selected_diagram _INetGet_w_Progress("http://www.winti-wetter.ch/aktuell.gif",$24h_image,1) GUICtrlSetImage($pic_24h, $24h_image) Case $selected_tab = $tab_selected_sonnemond $monddaten = GetMondDaten() $sonnendaten = GetSonneDaten() For $i = 0 to 3 GUICtrlSetData($array_moon_values[$i], $monddaten[1][$i]) Next For $i = 4 to 8 If $i = 4 Then $monddaten[2][$i] = StringTrimLeft($monddaten[2][$i], 2) GUICtrlSetData($array_moon_values[$i], $monddaten[2][$i]) Next For $i = 1 to 4 GUICtrlSetData($array_sun_values[$i], $sonnendaten[1][$i]) Next Case $selected_tab = $tab_selected_radar _InetGet_w_Progress("http://www.radar.ethz.ch/aktuell/ppi_aktuell_nah.gif",$radar_image,1) GUICtrlSetImage($radarbild, $radar_image) EndSelect GUISetState(@SW_ENABLE, $main_gui) WinActivate($main_gui) EndIf EndFunc Func GetWetterdaten() SplashTextOn("Hole Wetterdaten...", "Bitte warten..." & @CRLF & "Die Wetterdaten werden von www.winti-wetter.ch heruntergeladen", 250, 100) $oIE = _IECreate(0) If @error Then Exit 1 + 0 * MsgBox(16, "Fehler - Wetterdaten", "Fehler beim erstellen des IE Objekts für die Wetterdaten.") _IENavigate($oIE, "http://www.winti-wetter.ch/aktuell.htm") If @error Then Exit 1 + 0 * MsgBox(16, "Fehler - Wetterdaten", "Fehler beim ansteuern der Homepage für die Wetterdaten.") Sleep(2000) $table_content = _IETableGetObjByIndex($oIE, 1) If @error Then Exit 1 + 0 * MsgBox(16, "Fehler - Wetterdaten", "Fehler beim Auswählen der Tabelle für die Wetterdaten.") $table_contents = _IETableWriteToArray($table_content) If @error Then Exit 1 + 0 * MsgBox(16, "Fehler - Wetterdaten", "Fehler beim Array schreiben der Tabelle für die Wetterdaten.") _IEQuit($oIE) If @error Then Exit 1 + 0 * MsgBox(16, "Fehler - Wetterdaten", "Fehler beim freimachen des IE Objekts für die Wetterdaten.") SplashOff() Return $table_contents EndFunc Func GetMondDaten() SplashTextOn("Hole Monddaten...", "Bitte warten..." & @CRLF & "Die Monddaten werden von www.winti-wetter.ch heruntergeladen", 250, 100) $oIE = _IECreate(0) If @error Then Exit 1 + 0 * MsgBox(16, "Fehler - Monddaten", "Fehler beim erstellen des IE Objekts für die Monddaten.") _IENavigate($oIE, "http://www.winti-wetter.ch/sunmoon.html") If @error Then Exit 1 + 0 * MsgBox(16, "Fehler - Monddaten", "Fehler beim ansteuern der Homepage für die Monddaten.") Sleep(2000) $table_content = _IETableGetObjByIndex($oIE, 1) If @error Then Exit 1 + 0 * MsgBox(16, "Fehler - Monddaten", "Fehler beim auswählen der Tabelle für die Monddaten.") $table_contents = _IETableWriteToArray($table_content) If @error Then Exit 1 + 0 * MsgBox(16, "Fehler - Monddaten", "Fehler beim Array schreiben der Tabelle für die Monddaten.") _IEQuit($oIE) If @error Then Exit 1 + 0 * MsgBox(16, "Fehler - Monddaten", "Fehler beim freimachen des IE Objekts für die Monddaten.") ;Dim $returning_array[14] ;For $i = 0 to 12 ;$returning_array[$i] = $table_contents[$i][1] ;Next SplashOff() Return $table_contents EndFunc Func GetSonneDaten() SplashTextOn("Hole Sonnendaten...", "Bitte warten..." & @CRLF & "Die Sonnendaten werden von www.winti-wetter.ch heruntergeladen", 250, 100) $oIE = _IECreate(0) If @error Then Exit 1 + 0 * MsgBox(16, "Fehler - Sonnendaten", "Fehler beim erstellen des IE Objekts für die Sonnendaten.") _IENavigate($oIE, "http://www.winti-wetter.ch/sunmoon.html") If @error Then Exit 1 + 0 * MsgBox(16, "Fehler - Sonnendaten", "Fehler beim ansteuern der Homepage für die Sonnendaten.") Sleep(2000) $table_content = _IETableGetObjByIndex($oIE, 2) If @error Then Exit 1 + 0 * MsgBox(16, "Fehler - Sonnendaten", "Fehler beim auswählen der Tabelle für die Sonnendaten.") $table_contents = _IETableWriteToArray($table_content) If @error Then Exit 1 + 0 * MsgBox(16, "Fehler - Sonnendaten", "Fehler beim Array schreiben der Tabelle für die Sonnendaten.") _IEQuit($oIE) If @error Then Exit 1 + 0 * MsgBox(16, "Fehler - Sonnendaten", "Fehler beim freimachen des IE Objekts für die Sonnendaten.") ;Dim $returning_array[14] ;For $i = 0 to 12 ;$returning_array[$i] = $table_contents[$i][1] ;Next SplashOff() Return $table_contents EndFunc Func _IETableWriteToArray_Mod($o_object) If IsObj($o_object) Then $i_cols = 0 $trs = $o_object.rows For $tr In $trs $tds = $tr.GetElementsByTagName ("td") $i_col = 0 For $td In $tds $i_col = $i_col + 1 Next If $i_col > $i_cols Then $i_cols = $i_col Next $i_rows = 2;$trs.length Dim $a_TableCells[$i_cols][$i_rows] $row = 0 For $tr In $trs $tds = $tr.GetElementsByTagName ("td") $col = 0 For $td In $tds $a_TableCells[$col][$row] = $td.innerText $col = $col + 1 Next $row = $row + 1 If $row = 2 then ExitLoop Next SetError(0) Return $a_TableCells Else SetError(1) Return 0 EndIf EndFunc ;==>_IETableWriteToArray Func ShowMinigraphic($listitem) Select Case $listitem = $li1 $pic_url = "http://www.winti-wetter.ch/mini_currentt.gif" Case $listitem = $li2 $pic_url = "http://www.winti-wetter.ch/mini_currentf.gif" Case $listitem = $li3 $pic_url = "http://www.winti-wetter.ch/mini_currentd.gif" Case $listitem = $li4 $pic_url = "http://www.winti-wetter.ch/mini_currentr.gif" Case $listitem = $li5 $pic_url = "http://www.winti-wetter.ch/mini_currentt3.gif" Case $listitem = $li6 $pic_url = "http://www.winti-wetter.ch/mini_currentxt.gif" Case $listitem = $li7 $pic_url = "http://www.winti-wetter.ch/mini_currentw.gif" Case $listitem = $li8 $pic_url = "http://www.winti-wetter.ch/mini_currentwr.gif" Case $listitem = $li9 $pic_url = "http://www.winti-wetter.ch/mini_currentsl.gif" Case $listitem = $li10 $pic_url = "http://www.winti-wetter.ch/mini_currentsu.gif" Case $listitem = $li11 $pic_url = "http://www.winti-wetter.ch/mini_currenttp.gif" Case $listitem = $li12 $pic_url = "http://www.winti-wetter.ch/mini_currentst.gif" Case $listitem = $li13 $pic_url = "http://www.winti-wetter.ch/mini_currentwc.gif" Case $listitem = $li14 $pic_url = "http://www.winti-wetter.ch/mini_currentcl.gif" Case $listitem = "" $pic_url = "" EndSelect If $pic_url = "" Then MsgBox(0,"Wähle Minigrafik", "Du hast vergessen eine Minigrafik auszuwählen.") Else _InetGet_w_Progress($pic_url, @TempDir & "\Minigraphic.gif", 1) $minigui = GUICreate("Minigrafik: " & $listitem & " (schliessen mit ESC)", 410, 280,-1,-1,$DS_SETFOREGROUND,$WS_EX_DLGMODALFRAME,$main_gui) $minigraphic = GUICtrlCreatePic(@TempDir & "\Minigraphic.gif", 5, 5, 400, 250) GUISetState() GUISetState(@SW_DISABLE, $main_gui) Do $msg = GUIGetMsg() Sleep(10) Until $msg = $GUI_EVENT_CLOSE GUISetState(@SW_ENABLE, $main_gui) GUIDelete($minigui) EndIf EndFunc Func GetSMAPrognose() SplashTextOn("Hole Wetterprognose...", "Bitte warten..." & @CRLF & "Die Wetterprognosen werden von www.meteoschweiz.ch heruntergeladen", 250, 100) $oIE = _IECreate(0) _IENavigate($oIE, "http://www.meteoschweiz.ch/de/Prognosen/Vorhersagen/Schweiz/schweiz.shtml") ;$count = _IETableGetCount($oIE) Sleep(2000) $table_content = _IETableGetObjByIndex($oIE, 0) $table_contents = _IETableWriteToArray($table_content) _IEQuit($oIE) SplashOff() Return $table_contents[0][1] EndFunc Func ShowPrognoseKarte() $minigui = GUICreate("Prognose (schliessen mit ESC)", 710, 490,-1,-1,$DS_SETFOREGROUND,$WS_EX_DLGMODALFRAME,$main_gui) $minigraphic = GUICtrlCreatePic(@TempDir & "\Prognose_ch.gif", 5, 5, 700, 464) GUISetState() GUISetState(@SW_DISABLE, $main_gui) Do $msg = GUIGetMsg() Sleep(10) Until $msg = $GUI_EVENT_CLOSE GUISetState(@SW_ENABLE, $main_gui) GUIDelete($minigui) EndFunc Func GetWetteraussichten() SplashTextOn("Hole Wetteraussichten...", "Bitte warten..." & @CRLF & "Die Wetteraussichten werden von www.meteoschweiz.ch heruntergeladen", 250, 100) $oIE = _IECreate(0) _IENavigate($oIE, "http://www.meteoschweiz.ch/de/Prognosen/Vorhersagen/Schweiz/mittelfrist.shtml") Sleep(2000) $table_content = _IETableGetObjByIndex($oIE, 2) $table_contents = _IETableWriteToArray($table_content) Dim $array_temparaturen[1] For $i = 1 To Ubound($table_contents, 2) - 1 For $j = 0 To UBound($table_contents, 1) -1 $table_contents[$j][$i] = StringStripWS($table_contents[$j][$i], 8) _ArrayAdd($array_temparaturen, $table_contents[$j][$i]) Next Next _ArrayDelete($array_temparaturen, 0) $doc = $oIE.document $imgs = $doc.images Dim $array_wettersymbole[1] For $img In $imgs _ArrayAdd($array_wettersymbole, $img.src) Next _ArrayDelete($array_wettersymbole, 13) _ArrayDelete($array_wettersymbole, 14) _ArrayDelete($array_wettersymbole, 15) _ArrayDelete($array_wettersymbole, 0) Dim $array_aussichten[2][12] For $i = 0 to 1 If $i = 0 Then For $j = 0 to 11 $array_aussichten[$i][$j] = $array_temparaturen[$j] Next ElseIf $i = 1 Then For $j = 0 to 11 $array_aussichten[$i][$j] = $array_wettersymbole[$j] Next EndIf Next _IEQuit($oIE) SplashOff() Return $array_aussichten EndFunc Func ShowAussichten() $array_wetteraussichten = GetWetteraussichten() For $i = 1 to 12 _InetGet_w_Progress($array_wetteraussichten[1][$i -1], @TempDir & "\Wetteraussichten_" & $i & ".gif", 1) Next $minigui = GUICreate("Prognose (schliessen mit ESC)", 500, 340,-1,-1,$DS_SETFOREGROUND,$WS_EX_DLGMODALFRAME,$main_gui) GUISetBkColor(0xffffff) $TOP = 55 $LEFT = 105 For $i = 1 to 4 GUICtrlCreatePic(@TemPDir & "\Wetteraussichten_" & $i & ".gif", $LEFT, $TOP, 76, 64) GUICtrlCreateLabel($array_wetteraussichten[0][$i - 1], $LEFT, $TOP + 65, 76, 20) $LEFT = $LEFT + 95 Next $LEFT = 105 $TOP = 90 + 50 For $i = 5 to 8 GUICtrlCreatePic(@TemPDir & "\Wetteraussichten_" & $i & ".gif", $LEFT, $TOP, 76, 64) GUICtrlCreateLabel($array_wetteraussichten[0][$i - 1], $LEFT, $TOP + 65, 76, 20) $LEFT = $LEFT + 95 Next $LEFT = 105 $TOP = 175 + 50 For $i = 9 to 12 GUICtrlCreatePic(@TemPDir & "\Wetteraussichten_" & $i & ".gif", $LEFT, $TOP, 76, 64) GUICtrlCreateLabel($array_wetteraussichten[0][$i - 1], $LEFT, $TOP + 65, 76, 20) $LEFT = $LEFT + 95 Next GUICtrlCreateLabel("Nord- und" & @CRLF & "Ostschweiz", 5, 75, 95, 40) GUICtrlSetFont(-1, 10, 600) GUICtrlCreateLabel("Westschweiz", 5, 160, 95, 40) GUICtrlSetFont(-1, 10, 600) GUICtrlCreateLabel("Südschweiz", 5, 175 + 50 + 20, 95, 40) GUICtrlSetFont(-1, 10, 600) $tag_1 = _DateAdd("D", 1, @YEAR & "/" & @MON & "/" & @MDAY) $tag_1 = StringSplit($tag_1, "/") $tag_1 = _DateToDayOfWeek($tag_1[1], $tag_1[2], $tag_1[3]) $tag_2 = _DateAdd("D", 2, @YEAR & "/" & @MON & "/" & @MDAY) $tag_2 = StringSplit($tag_2, "/") $tag_2 = _DateToDayOfWeek($tag_2[1], $tag_2[2], $tag_2[3]) $tag_3 = _DateAdd("D", 3, @YEAR & "/" & @MON & "/" & @MDAY) $tag_3 = StringSplit($tag_3, "/") $tag_3 = _DateToDayOfWeek($tag_3[1], $tag_3[2], $tag_3[3]) $tag_4 = _DateAdd("D", 4, @YEAR & "/" & @MON & "/" & @MDAY) $tag_4 = StringSplit($tag_4, "/") $tag_4 = _DateToDayOfWeek($tag_4[1], $tag_4[2], $tag_4[3]) If (@HOUR + (@MDAY / 100) > 11.45) Then $tag_1 = $tag_1 + 1 If $tag_1 = 8 Then $tag_1 = 1 $tag_2 = $tag_2 + 1 If $tag_2 = 8 Then $tag_2 = 1 $tag_3 = $tag_3 + 1 If $tag_3 = 8 Then $tag_3 = 1 $tag_4 = $tag_4 + 1 If $tag_4 = 8 Then $tag_4 = 1 EndIf For $i = 1 to 4 Select Case Eval("tag_" & $i) = 1 $tag = "Sonntag" If $i = 1 Then $tag_1 = $tag If $i = 2 Then $tag_2 = $tag If $i = 3 Then $tag_3 = $tag If $i = 4 Then $tag_4 = $tag Case Eval("tag_" & $i) = 2 $tag = "Montag" If $i = 1 Then $tag_1 = $tag If $i = 2 Then $tag_2 = $tag If $i = 3 Then $tag_3 = $tag If $i = 4 Then $tag_4 = $tag Case Eval("tag_" & $i) = 3 $tag = "Dienstag" If $i = 1 Then $tag_1 = $tag If $i = 2 Then $tag_2 = $tag If $i = 3 Then $tag_3 = $tag If $i = 4 Then $tag_4 = $tag Case Eval("tag_" & $i) = 4 $tag = "Mittwoch" If $i = 1 Then $tag_1 = $tag If $i = 2 Then $tag_2 = $tag If $i = 3 Then $tag_3 = $tag If $i = 4 Then $tag_4 = $tag Case Eval("tag_" & $i) = 5 $tag = "Donnerstag" If $i = 1 Then $tag_1 = $tag If $i = 2 Then $tag_2 = $tag If $i = 3 Then $tag_3 = $tag If $i = 4 Then $tag_4 = $tag Case Eval("tag_" & $i) = 6 $tag = "Freitag" If $i = 1 Then $tag_1 = $tag If $i = 2 Then $tag_2 = $tag If $i = 3 Then $tag_3 = $tag If $i = 4 Then $tag_4 = $tag Case Eval("tag_" & $i) = 7 $tag = "Samstag" If $i = 1 Then $tag_1 = $tag If $i = 2 Then $tag_2 = $tag If $i = 3 Then $tag_3 = $tag If $i = 4 Then $tag_4 = $tag EndSelect Next GUICtrlCreateLabel($tag_1, 105, 35, 86, 20) GUICtrlSetFont(-1, 10, 600) GUICtrlCreateLabel($tag_2, 105 + 95, 35, 86, 20) GUICtrlSetFont(-1, 10, 600) GUICtrlCreateLabel($tag_3, 105 + (2*95), 35, 86, 20) GUICtrlSetFont(-1, 10, 600) GUICtrlCreateLabel($tag_4, 105 + (3*95), 35, 86, 20) GUICtrlSetFont(-1, 10, 600) GUISetState() GUISetState(@SW_DISABLE, $main_gui) Do $msg = GUIGetMsg() Sleep(10) Until $msg = $GUI_EVENT_CLOSE GUISetState(@SW_ENABLE, $main_gui) GUIDelete($minigui) EndFunc