Hallo, ich will euch heute zeigen wie man einen WoW Login Status Viewer machen kann :)
[Only registered and activated users can see links. Click Here To Register...]
Wir machen uns eine neue .au3 Datei die wir z.B. Viewer.au3 nennen. Diese öffnen wir nun mit Scite, dem AutoIt-Bearbeitungsprogramm.
So, dies sind die includes die wir am Anfang des Dokuments schreiben. Ein include ist eigentlich nichts weiter als eine andere au3-Datei, welche oftmals einen langen Code hat und weitere Funktionen bietet. Die INet.au3 bietet zum Beispiel die Möglichkeit, diverse Texte und Sources aus dem Internet herunterzuladen.
Mit HotKeySet setze ich zuerst einmal einen Knopf, mit welchem man diesen Status Viewer aktualisieren kann. F5 steht für den Knopf, eingeklammert ist es weil er sonst die Taste F und 5 zusammen erkennen würde. So ist die Leertaste z.B. {Space}. Refresh steht für den Namen der Funktion, die der HotKey aufruft. Dazu später mehr.
Nun wollen wir erstmal den Statustext des Loginscreens herunterladen.
Dies bedeutet, dass $alerttext nun der heruntergeladene Text ist, da _InetGetSource den Quelltext dieser Datei herunterlädt.
Nun, wenn ihr [Only registered and activated users can see links. Click Here To Register...] öffnet seht ihr, dass da manchmal noch der Text SERVERALERT: davorsteht, damit der WoW Client diese Eingabe als Ankündigung erkennt. StringReplace ersetzt dieses durch "", also garnichts -> der Text wird entfernt.
das ">" Symbol hat eine ähnliche Bedeutung, ist aber meist weiter unten und da wir dieses entfernen wollen machen wir dies auch mit StringReplace.
Da _InetGetSource Umlaute offenbar nicht erkennt, werden die Hieroglyphenartigen Zeichen einfach durch richtige Umlaute ersetzt. Nicht sehr professionell, aber es funktioniert :awesome:
Nun, da wir ein Hintergrundbild wollen schreiben wir einen FileInstall Befehl. Wenn wir die au3 compilieren, wird die "C:\bg.jpg" in die .exe mit eincompiliert. Wenn wir die .exe dann starten wird das Bild in das Tempverzeichnis verschoben. Dies mache ich deshalb, damit man nicht eine zusätzliche Bilddatei zur .exe mitliefern muss.
GUICreate erstellt ein Fenster mit den Maßen 500x400. $Pic1 ist wie bereits davor erwähnt das Bild das nun im Tempverzeichnis ist.
$label ist das Textfeld in dem der Serverstatus angezeigt wird.
GUICtrlSetBkColor macht das Label transparent, damit keine graue Box hinter dem Text ist.
GUICtrlSetColor ist die Farbe des Textes, 0xFFFFFF ist weiß, damit man es auf dem dunklen Hintergrund gut erkennt.
SetData ändert "$label" zu "$alerttext", d.h. die leere Textbox wird zum Serverstatus geändert.
While 1 und WEnd sind eine Schleife die sich immer wiederholt. Falls $GUI_EVENT_CLOSE, als der Fall eintritt dass das Fenster geschlossen wird, dann verschwindet die GUI.
Nun, dies ist dann eben noch die Aktualisierungsfunktion vom HotKey.
SetData setzt den alten Status auf "Aktualisieren...". Dann wird mit _InetGetSource wieder der aktuelle Serverstatus heruntergeladen.
Dann kommen wieder die Stringreplaces wie am Anfang.
Und das letzte SetData ersetzt das "Aktualisieren..." wieder mit der neuen Servernachricht.
Hier der ganze Code:
(Als bg.jpg könnt ihr ein eigenes 500x400 Bild verwenden.)
Viel Spaß! :)
[Only registered and activated users can see links. Click Here To Register...]
Wir machen uns eine neue .au3 Datei die wir z.B. Viewer.au3 nennen. Diese öffnen wir nun mit Scite, dem AutoIt-Bearbeitungsprogramm.
Code:
#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <INet.au3> #include <File.au3> #include <StaticConstants.au3> #include <resources.au3>
Code:
HotKeySet("{F5}", "Refresh")
Nun wollen wir erstmal den Statustext des Loginscreens herunterladen.
Code:
$alerttext = _InetGetSource ("http://status.wow-europe.com/de/alert")
Code:
$alerttext = StringReplace($alerttext, "SERVERALERT:", "") $alerttext = StringReplace($alerttext, ">", "") $alerttext = StringReplace($alerttext, "ü", "ü") $alerttext = StringReplace($alerttext, "ö", "ö") $alerttext = StringReplace($alerttext, "äß", "ä") $alerttext = StringReplace($alerttext, "ä", "ä")
das ">" Symbol hat eine ähnliche Bedeutung, ist aber meist weiter unten und da wir dieses entfernen wollen machen wir dies auch mit StringReplace.
Da _InetGetSource Umlaute offenbar nicht erkennt, werden die Hieroglyphenartigen Zeichen einfach durch richtige Umlaute ersetzt. Nicht sehr professionell, aber es funktioniert :awesome:
Code:
FileInstall("C:\bg.jpg", @TempDir & "\bg.jpg")
Code:
$hWnd = GUICreate("WoW Login Status Viewer", 500, 400)
$Pic1 = GUICtrlCreatePic(@TempDir & "\bg.jpg", 0, 0, 500, 400)
GUICtrlSetState(Default, $GUI_DISABLE)
$label = GUICtrlCreateLabel("", 10, 100, 480, 300)
GUICtrlSetBkColor(Default, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(Default, 0xFFFFFF)
GUICtrlSetData($label, $alerttext)
GUISetState()
$label ist das Textfeld in dem der Serverstatus angezeigt wird.
GUICtrlSetBkColor macht das Label transparent, damit keine graue Box hinter dem Text ist.
GUICtrlSetColor ist die Farbe des Textes, 0xFFFFFF ist weiß, damit man es auf dem dunklen Hintergrund gut erkennt.
SetData ändert "$label" zu "$alerttext", d.h. die leere Textbox wird zum Serverstatus geändert.
Code:
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Code:
Func Refresh()
GUICtrlSetData($label, "Aktualisieren...")
$alerttext = _InetGetSource ("http://status.wow-europe.com/de/alert")
$alerttext = StringReplace($alerttext, "SERVERALERT:", "")
$alerttext = StringReplace($alerttext, ">", "")
$alerttext = StringReplace($alerttext, "ü", "ü")
$alerttext = StringReplace($alerttext, "ö", "ö")
$alerttext = StringReplace($alerttext, "äß", "ä")
$alerttext = StringReplace($alerttext, "ä", "ä")
GUICtrlSetData($label, $alerttext)
EndFunc
SetData setzt den alten Status auf "Aktualisieren...". Dann wird mit _InetGetSource wieder der aktuelle Serverstatus heruntergeladen.
Dann kommen wieder die Stringreplaces wie am Anfang.
Und das letzte SetData ersetzt das "Aktualisieren..." wieder mit der neuen Servernachricht.
Hier der ganze Code:
Code:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#include <INet.au3>
#include <File.au3>
#include <StaticConstants.au3>
#include <resources.au3>
HotKeySet("{F5}", "Refresh")
$alerttext = _InetGetSource ("http://status.wow-europe.com/de/alert")
$alerttext = StringReplace($alerttext, "SERVERALERT:", "")
$alerttext = StringReplace($alerttext, ">", "")
$alerttext = StringReplace($alerttext, "ü", "ü")
$alerttext = StringReplace($alerttext, "ö", "ö")
$alerttext = StringReplace($alerttext, "äß", "ä")
$alerttext = StringReplace($alerttext, "ä", "ä")
FileInstall("C:\bg.jpg", @TempDir & "\bg.jpg")
$hWnd = GUICreate("WoW Login Status Viewer", 500, 400)
$Pic1 = GUICtrlCreatePic(@TempDir & "\bg.jpg", 0, 0, 500, 400)
GUICtrlSetState(Default, $GUI_DISABLE)
$label = GUICtrlCreateLabel("", 10, 100, 480, 300)
GUICtrlSetBkColor(Default, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(Default, 0xFFFFFF)
GUICtrlSetData($label, $alerttext)
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func Refresh()
GUICtrlSetData($label, "Aktualisieren...")
$alerttext = _InetGetSource ("http://status.wow-europe.com/de/alert")
$alerttext = StringReplace($alerttext, "SERVERALERT:", "")
$alerttext = StringReplace($alerttext, ">", "")
$alerttext = StringReplace($alerttext, "ü", "ü")
$alerttext = StringReplace($alerttext, "ö", "ö")
$alerttext = StringReplace($alerttext, "äß", "ä")
$alerttext = StringReplace($alerttext, "ä", "ä")
GUICtrlSetData($label, $alerttext)
EndFunc
Viel Spaß! :)