Vista Gadget selbst gemacht
Hallo zusammen,
Seit Vista gibt es ja die Sidebar und jede Menge Gadgets. Wie kann man aber ein solches Gadget selbst machen? Ist eingentlich ganz einfach. Man braucht dazu nur eine XML Datei und eine HTML Datei und evtl noch ein paar Bilder.
So sieht mein Icewolf Gadget aus und hat folgende Funktionen. Alle 10 Sekunden wird der freie Arbeitsspeicher und die IP per WMI ausgelesen.
Folgende Files werden benötigt:
- gadget.xml
- IcewolfGadget.htm
- style.css
- icewolf.png (Icon für Gadget)
- background.png (Gintergrund vom Gadget)
Und so sieht das gadget.xml File aus:
<?xml version="1.0" encoding="utf-8"?>
<gadget>
<name>icewolf Gadget</name>
<namespace>Icewolf Gadget</namespace>
<version>0.2</version>
<author name="Andres Bohhren">
<info url="www.icewolf.ch" text="Icewolf.ch" />
<logo src="icewolf.png" />
</author>
<copyright>© 2008</copyright>
<description>Displays Windows Vista Version</description>
<icons>
<icon height="82" width="82" src="icewolf.png" />
</icons>
<hosts>
<host name="sidebar">
<base type="HTML" apiVersion="1.0.0" src="IcewolfGadget.htm" />
<permissions>full</permissions>
<platform minPlatformVersion="1.0"/>
<defaultImage src="icewolf.png" />
</host>
</hosts>
</gadget>
Und so sieht die HTML Seite aus
<html>
<head>
<title>Icewolf Gadget</title>
<style>
body{
height: 134;
width: 132;
background:no-repeat url(background.png);
color: #FFFFFF;
}
</style>
</head>
<script language="VBScript">
Sub Window_OnLoad
'GetOS
GetMemory
GetIPAdress
iTimerID = window.SetInterval("GetMemory", 10000)
iTimerID = window.SetInterval("GetIPAdress", 10000)
End Sub
Sub GetOS
strComputer = "."
Set objLocator = CreateObject("WbemScripting.SwbemLocator")
Set objWMIService = objLocator.ConnectServer(strComputer, "root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_OperatingSystem")
For Each objItem in colItems
DataArea.InnerHTML = objItem.Caption
Next
End Sub
Sub GetMemory
Set objLocator = CreateObject("WbemScripting.SwbemLocator")
Set objWMIService = objLocator.ConnectServer(".", "root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_OperatingSystem")
For Each objItem in colItems
strMem = cint(objItem.FreePhysicalMemory / 1024) & " MB"
MemData.InnerHTML = strMem
Next
End Sub
Sub GetIPAdress
Set objLocator = CreateObject("WbemScripting.SwbemLocator")
Set objWMIService = objLocator.ConnectServer(".", "root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPenabled=True")
For Each objItem in colItems
If Not IsNull(objItem.IPAddress) Then
txtIP = txtIP & vbcrlf & objItem.IPAddress(0)
else
txtIP = "0.0.0.0"
End If
Next
IP.InnerHTML = txtIP
End Sub
</script>
<body>
<b>FreeMem:</b><br>
<span id="MemData"></span><br>
<b>IP:</b><br>
<span id="IP"></span>
</body>
</html>
Alle Obenstehenden Files werden dann in ein ZIP File gepakt und die Endung von *.zip auf *.gadget geändert. Dann kann das File zum Download angeboten werden. Eigentlich macht Vista nichts anderes, als das ZIP in den folgenden Ordner zu Entpacken und auszuführen. "C:\Users\username\AppData\Local\Microsoft\Windows Sidebar\Gadgets\Icewolf.gadget"
Hier könnt ihr Icewolf.gadget downloaden.
Übrigens: Der Webserver auf dem das Gadget angeboten werden soll, muss den MIME Type application/x-windows-gadget für die Extension .gadget registriert haben, damit das Gadget installiert werden kann.