DesktopWetter

  • Hier möchte euch an meinem kleinen Script teil haben lassen

    Gibt hier bestimmt noch mehr Leute die mehr auf den Desktop glotzen als mal raus

    Für die ist es vllt doch mal ganz Interesant wie warm es draußen ist um vllt doch einmal rauszugehen

    Das Script hollt sie den Aktuellen Wetter Status ( mit bild und Integriet es in das Hintergrundbild )

    Wir das Prog Beendet wird orginalbild wieder gesetzt

    Spoiler anzeigen
    [autoit]


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

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

    Script: Wetter.au3
    Version: 1.0
    Author: Gummibaer
    Info: Veränderungen für eigennutzen Erlaubt .. für bekanntmachung an
    Andere Untersagt

    <Wetter.ini>
    [Settings]
    PLZ=29359
    ; Aktualisierungsintervall in Sekunden
    Interval=60
    ; PosX von rechts
    PosX=300
    ; PosY von oben
    PosY=1
    ;0xFF + Farbe Weiß = ffffff Schwarz = 00000 ( Hexefarben )
    Color=0xFFffffff
    ;Schriftart
    Font=Arial
    ;Schriftgröße
    FontSize=24
    <Wetter.ini Ende>

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

    #ce ----------------------------------------------------------------------------

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

    #include <Inet.au3>
    #include <GDIPlus.au3>
    Opt("OnExitFunc","_exit")

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

    Global Const $SPIF_SENDWININICHANGE = 0x2
    Global Const $SPIF_UPDATEINIFILE = 0x1
    Global Const $SPI_SETDESKWALLPAPER = 20
    Global $defaultwallpaper = RegRead("HKEY_CURRENT_USER\Control Panel\Desktop","Wallpaper")
    Global $posX = IniRead("Wetter.ini", "Settings", "PosX", 300)
    Global $posY = IniRead("Wetter.ini", "Settings", "PosY", 0)
    Global $Color = IniRead("Wetter.ini", "Settings", "Color", 0xFFffffff)
    Global $Font = IniRead("Wetter.ini", "Settings", "Font", "Arial")
    Global $FontSize = IniRead("Wetter.ini", "Settings", "FontSize", "24")
    $plz = IniRead("Wetter.ini", "Settings", "PLZ", 29259)
    $interval = IniRead("Wetter.ini", "Settings", "Interval", 60)

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

    While 1
    $html = _INetGetSource("http://de.weather.com/weather/local/" & $plz)
    $var = StringRegExp($html, '<TD COLSPAN="2" CLASS="obsTempText" VALIGN="TOP">&nbsp;(.*)&deg;C</TD>', 0)
    If $var = 1 Then
    $var = StringRegExp($html, '<TD COLSPAN="2" CLASS="obsTempText" VALIGN="TOP">&nbsp;(.*)&deg;C</TD>', 1)
    $weather = $var[0] & "°"
    Else
    $weather = "Keine Verbindung"
    EndIf
    $var = StringRegExp($html, '<TD><IMG src="http://image.weather.com/web/common/intlwxicons/52/(.*)" height="52" width="52" border="0" ALT="', 0)
    If $var = 1 Then
    $var = StringRegExp($html, '<TD><IMG src="http://image.weather.com/web/common/intlwxicons/52/(.*)" height="52" width="52" border="0" ALT="', 1)
    $pic = "http://image.weather.com/web/common/intlwxicons/52/" & $var[0]
    InetGet($pic, "weather.gif", 1)
    If FileExists("weather.gif") Then
    $pic = "weather.gif"
    Else
    $pic = "empty.gif"
    EndIf
    Else
    $pic = "empty.gif"
    EndIf
    _BaueHintergrundbildzusammen($weather)
    DllCall("user32.dll", "int", "SystemParametersInfo", "uint", $SPI_SETDESKWALLPAPER, "uint", 0, "str", @ScriptDir & "\BG.bmp", "uint", BitOR($SPIF_SENDWININICHANGE,$SPIF_UPDATEINIFILE))
    Sleep($interval * 1000)
    WEnd

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

    Func _BaueHintergrundbildzusammen($weather)
    _GDIPlus_Startup() ;GDI starten
    $LoadPic = _GDIPlus_ImageLoadFromFile($defaultwallpaper)
    $wetterPic = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\weather.gif")
    $hGraphics = _GDIPlus_ImageGetGraphicsContext ($LoadPic)
    $iX = _GDIPlus_ImageGetWidth($LoadPic)
    $iX2 = _GDIPlus_ImageGetWidth($wetterPic)
    $iy2 = _GDIPlus_ImageGetHeight($wetterPic)
    $hBrush = _GDIPlus_BrushCreateSolid($Color)
    $hFormat = _GDIPlus_StringFormatCreate()
    $hFamily = _GDIPlus_FontFamilyCreate($Font)
    $hFont = _GDIPlus_FontCreate($hFamily, $FontSize, 2)
    $tLayout = _GDIPlus_RectFCreate($iX- ($posX -$iX2), $posY + (($iy2 - $FontSize) / 2), 0, 0)
    $aInfo = _GDIPlus_GraphicsMeasureString($hGraphics, $weather, $hFont, $tLayout, $hFormat)
    _GDIPlus_GraphicsDrawStringEx($hGraphics, $weather, $hFont, $aInfo[0], $hFormat, $hBrush)
    _GDIPlus_GraphicsDrawImage ($hGraphics, $wetterPic, $iX- $posX, $posY)
    _GDIPlus_ImageSaveToFile($LoadPic, @ScriptDir & "\BG.bmp")
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_ImageDispose($LoadPic)
    _GDIPlus_ImageDispose($wetterPic)
    _GDIPlus_Shutdown()
    return @ScriptDir & "\BG.jpg"
    EndFunc

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

    Func _exit()
    DllCall("user32.dll", "int", "SystemParametersInfo", "uint", $SPI_SETDESKWALLPAPER, "uint", 0, "str", $defaultwallpaper, "uint", BitOR($SPIF_SENDWININICHANGE,$SPIF_UPDATEINIFILE))
    EndFunc

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

    Normal
    [Blockierte Grafik: http://www.central-irc.de/Nichtgestartet.JPG]
    gestartet
    [Blockierte Grafik: http://www.central-irc.de/gestartet.JPG]


    Hinweis:
    Die position wird anhand der Bildauflösung gestezt nicht nach der Bildschirmauflösung
    Desweiteren Funktioniert das nur wenn auch ein Hintergundbild gesetzt wurde.
    Wo keins ist kann keins geändert werden ;)

    6 Mal editiert, zuletzt von Gummibaer (11. August 2009 um 10:07)

  • Idee gut, nur funktionieren tut es bei mir nicht. Weder als User (spiechert das aktuelle Desktopbild als BMP und legt dann eine Dauerpause ein) noch als Administrator (speichert scheinbar kein Bild, löscht aber den Hintergrund beim beenden).

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Welches OS nutzt du
    ich nutze XP und bei mir funzt es super
    wenn du vista nutzt dann versuche
    #RequireAdmin
    mit oben einbauen

  • Nein, ich nutze auch XP. Nur, wenn nicht notwendig, ohne Adminrechte.

    Edit: Das Script holt sich das Hintergrundbild, ändert die Registry, holt das Weather.gif und auch die Temperatur. Nur im dann erzeugten Bild ist nichts zu sehen. Deswegen dachte ich es funktioniert gar nicht. Er zeigt bei mir nur immer das gleiche (nicht das selbe) Bild an.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    2 Mal editiert, zuletzt von Micha_he (5. August 2009 um 21:52)

  • Also ich hab Vista un selbst mit #RequireAdmin funzt es leider net ,er speichert nur das bild :thumbdown:

  • Irgendwas mit der Position passt nicht.

    Wenn ich für PosX und PosY jeweils 200 ins Script eintrage, erscheint das Wetter-Symbol auf dem rechten Bildschirmrand (1280x1024) !

    Außerdem wird die Temperatur genau hinter der Grafik angezeigt. Siehe Bild... ich hoffe das Hochladen klappt.

    autoit.de/wcf/attachment/5652/

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    Einmal editiert, zuletzt von Micha_he (5. August 2009 um 22:16)

  • PosX wird von rechts abgezogen
    also wenn PosX 0 ist würde das bild aus dem bereich sein
    ich hab dort 300 eingetragen bei
    PosY 1 könnte auch 0 sein

    die die gradzahl dahinter ist macht mich etwas stuzig
    da er das vom bild was er läd berechnet

    ich hab das nun auf 3 rechner hier drauf und läuft wunderbar

    alles xp prof

    Also ich hab Vista un selbst mit #RequireAdmin funzt es leider net ,er speichert nur das bild :thumbdown:


    Ich habe kein vista daher kann ich es auch schlecht da testen
    sorry

    Edit:
    FunH@cker es wurde eben erfolgreich auf vista getestet lag mit sicherheit dran das du keine INI genutzt hast und ich den fehler hatt und im sourcecode als default 0 eingetragen habe

    @ Micha_he
    Zeige mal bitte deine INI

    Einmal editiert, zuletzt von Gummibaer (5. August 2009 um 23:40)

  • Ich benutze keine INI ! Deswegen hatte ich ja Deinen Default-Wert "0" für $posX. Warum sollte ich eine nutzen, Du definierst doch alle Werte per Default beim IniRead().

    Ich habe noch etwas was ich nicht finden kann. Das "weather.gif" ist 52x52 Pixel groß. Das Bild soll ja per _GDIPlus_GraphicsDrawImage() hineinkopiert werden. Nur ist es dann im Ergebnis bestimmt 3-4 mal so groß wie im Original. Deswegen ist wahrscheinlich die Gradangabe auch dahinter !

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • [autoit]


    $iX = _GDIPlus_ImageGetWidth($LoadPic) ; Breite vom Wallpaper
    $iX2 = _GDIPlus_ImageGetWidth($wetterPic) ;Breite vom weather.gif
    $iy2 = _GDIPlus_ImageGetHeight($wetterPic) ;Höhe vom weather.gif

    [/autoit]


    Hollt sich die größe ist bei mir auch 52x52

    [autoit]


    _GDIPlus_GraphicsDrawImage ($hGraphics, $wetterPic, $iX- $posX, $posY)

    [/autoit]

    wenn deine auflösung zba 1440x900 ist
    und $posX ist 0
    dann ist die anzeige aus dem bereicht
    ist $posX zb 300
    1440 -300 = 1140
    dann wird bei 1140 Das gif eingefügt

    1140 + 52 = 1192
    Ab da kommt der text

    [autoit]

    $tLayout = _GDIPlus_RectFCreate($iX- ($posX -$iX2), $posY + (($iy2 - $FontSize) / 2), 0, 0)

    [/autoit]

    $iX- ($posX -$iX2)
    1400 - (300-52)
    also bei mir passt es aber wie ich gerade sehe hab ich im sourcecode 0 eingetragen :cursing:

    ist nun geändert daher kommste mit der position nicht klar

  • Scheinbar geht das Script, wenn kein Hintergrundbild angegeben ist, gar nicht !

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Scheinbar geht das Script, wenn kein Hintergrundbild angegeben ist, gar nicht !


    Hinweis:
    Die position wird anhand der Bildauflösung gestezt nicht nach der Bildschirmauflösung
    Desweiteren Funktioniert das nur wenn auch ein Hintergundbild gesetzt wurde.
    Wo keins ist kann keins geändert werden ;)


    die idee ist wirklich super aber bei mir funktioniert es leider leider nciht


    Hast du ein Hintergrundbild gesetzt ?

  • Es liegt an meinem Hintergrundbild. Mit einem anderen Bild im Hintergrund geht es.

    Hier das Bild mal für euch zum Testen. Vielleicht findet ja jemand das Problem...

    Edit: Auch einige der Windows XP Bilder gehen nicht, andere funktionieren wiederum.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    Einmal editiert, zuletzt von Micha_he (6. August 2009 um 23:05)

  • oki
    hab das mal getestet
    Das bild Geht zwar aber er macht es riesig

    Wenn ich es über Firefox als bg einrichte ( er wandelt es in ein bmp ) dann passt es
    JPG [gestreckt]
    autoit.de/wcf/attachment/5666/
    BMP ( allerdings musste ich bei der höhe 50 Pixel runter gehen ) damit es im sichtbaren bereich ist [Zentriert]
    autoit.de/wcf/attachment/5667/

    Es Scheint bei JPG hauptsächlich zu Problemen zu kommen
    Die Bildgröße Spielt auch eine Große Rolle

    Ich war schon am überlegen ob man nicht vllt alles ausblenden sollte dann ein screenshot anlegt und dann die grafik einbindet

    Er würde das nur bei jedem Start machen
    Den Screen Könnte er ja für weitere verarbeitung zwischen lagern

  • man könnte das skript verbessern wenn man in der ini sein standort eingeben könnte und wird das automatisch erkannt :D

  • man könnte das skript verbessern wenn man in der ini sein standort eingeben könnte und wird das automatisch erkannt :D

    Siehe:

    [autoit]

    $plz = IniRead("Wetter.ini", "Settings", "PLZ", 29259)

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Ich wollte fragen ob ich teile in mein Script einbauen kann und das dann veröffentlichen. Du würdest auch unter Credits stehen...
    Wäre nett von dir.

  • Vielen Danke...
    Wirst schon sehen...(-:
    Is aber noch nicht ausgereift...aber ich stellts drotzdem scho ma rein.

  • bei mir kommt nach ~ 5sec oben rechts: "keine verbindung" und dann wird ein bild von meinem Desktop gespeichert...
    das wars^^

    [autoit]


    While $Life = True
    $nMSG = BrainGetMsg()
    Switch $nMSG
    Case $Idea
    _Convert_Idea2Code()
    EndSwitch
    WEnd

    [/autoit]