This HowTo shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, or to act as a gateway to a website or a larger program.
What I like about gadgets is that they are really just small HTML pages. That means: No big-project development overhead. If you have "Notepad" and some knowledge about HTML, then you can write your own gadget. Like HTAs, they run with with full local-program privileges, and can use ActiveX objects. There is no limit to the creative things you can do with gadgets.
How to Create a Gadget
Here's all you need to do to create your own gadget:
1) Write an HTML page, say gadgetName.html
2) Write a short XML file, named (exactly) gadget.xml
3) Copy these two files into a particular directory:
userDir \ AppData\Local\Microsoft\Windows Sidebar\Gadgets\ gadgetName.gadget
The Details: Follow these steps and you'll have a new gadget in a few minutes:
1. Create a new folder on your desktop and name it "HelloGadget.gadget"
2. Open that folder and create two files in that folder. Here's the XML file (called a manifest): gadget.xml
<?xml version="1.0" encoding="utf-8" ?>
<gadget>
<name>HelloGadget</name>
<version>1.0.0.0</version>
<description>Hello World Gadget.</description>
<hosts>
<host name="sidebar">
<base type="HTML" apiVersion="1.0.0" src="HelloGadget.html" />
<permissions>Full</permissions>
<platform minPlatformVersion="1.0" />
</host>
</hosts>
</gadget>
About the only place you might go wrong is misspelling the name of the HTML file in the <base type="HTML" apiVersion="1.0.0" src="HelloGadget.html" /> line. Here's that HTML file:
<html>
<script>
//----------------- resizes the gadget display surface
function DoInit() {
document.body.style.width = 90;
document.body.style.height= 55;
document.body.style.margin=0;
}
</script>
<body onload="DoInit();">
<table border="5"><tr><td><center><i>Hello World!</i></center></td></tr></table>
</body>
</html>
3. Open a Windows Explorer and drill-down to locate the following folder:
userDir \ AppData\Local\Microsoft\Windows Sidebar\Gadgets\
...where userDir is your Windows User Name (the folder is in the "Desktop" virtual folder, just above "Computer" ) If you want, you can copy the following text and paste it into the address bar in any Explorer window (or in the Start/Search or Start/Run input boxes):
%localappdata%\Microsoft\Windows Sidebar\Gadgets
Looking in that folder, you will see the other gadgets that are already installed. Each is in a folder that has a file extension of .gadget A good way to learn about gadget programming is to examine the source files of the gadgets you can download from the Microsoft site.
4. Drag the HelloGadget.gadget folder from the desktop and drop it into that Gadgets directory.
5. Right-click the desktop and select Gadgets. Your gadget is now visible in the gallery.
It has the default icon, but the name is as was set in the XML file. Drag it and drop it onto your desktop. |
There you have it: Your first gadget. About all you can do with it is drag it around and close it. But that's a start. You can open the HTML file with your favorite text editor, make changes, and then drag it from the gallery to the desktop to see the effects of your changes.
Debugging
Alas, the usually-dependable all-purpose JavaScript debugging tool -- the alert() function -- is not available when running as a gadget. One option is to drop the HTML file onto a browser and run it there -- where alert() will work.
With Windows 7, there is a new registry key that affects debugging. Setting...
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Sidebar]
"ShowScriptErrors"=dword:00000001
...will enable the display of script errors. It's better than sitting there looking at the screen blankly and wondering why nothing is happening.
If you have Visual Studio, you can use its Just-In-Time debugging. Just insert:
debugger;
...at a good starting point in the <script> block. The VS script debugger will come up and let you single-step, check variables, and so forth. I've found this technique works best if you break your JScript out into a separate file (as opposed to putting it all in the HTML file). See Debugging JScript Programs with Visual Studio 2008 for related info.
Packaging and Deployment
Microsoft made this very easy. All you need to do is create a ZIP file that contains your two files. Rename the ZIP file to give it an extension of .gadget and you are done. When you right-click a file that has the .gadget extension, Windows asks if you want to install the gadget, and then it creates the AppData directory and unpacks the files into it. The gadget immediately becomes available in your gallery.
But, as we've seen, you don't need to create a deployment package: While developing, you can create the folder manually and work directly with the source code.
Caution: If you work this way (directly in the AppData folder), then be aware that if you choose to Uninstall in the Gadget Gallery, it will delete your files! Keep a copy of the files handy in a different place.
Rather than a renamed ZIP file, you can instead create a renamed CAB file for deployment. CAB files can be signed, so your users might avoid a scary "Unknown Publisher" notice when installing.
In the next, we'll create more complex gadgets! Keep visiting...
No comments:
Post a Comment