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.

Grüsse
Andres Bohren