Mittwoch, 8. August 2007
Gadet-Programmierung: Wo speichern Gadgets die Daten?
Wie Gadgets programmiert werden, ist in diversen Internetbeiträgen angerissen. Ein Excerpt samt Einführung in die Konzepte von VBScript und JScript sowie HTML samt CSS findet sich auch in den unten erwähnten Windows Vista-Tricks-Büchern (Kapitel 23, "Windows Programmierung zum Nulltarif", Abschnit "Gadget-Programmierung").

Für Anwender kann es interessant sein, zu erfahren, wo die Gadgets eigentlich die Daten ablegen. Da gibt es z.B. das Notizen-Gadget, in welchem sich Text ablegen lässt. Der Text bleibt auch beim Herunterfahren erhalten und verschwindet erst, wenn die Seite oder die komplette Notiz gelöscht wird. Kann man diese Notizinhalte eigentlich speichern?

Für Programmierer kommt die Fragestellung hinzu, wie sich eigentlich solche Dateninhalte speichern und lesen lassen.

Speichern und Lesen von Anwenderdaten

Zum Speichern und Lesen von anwenderbezogenen Daten wird innerhalb des Gadget von den Methoden der Klasse System.Gadget.Settings Gebrauch gemacht. Schreiben lassen sich Anwendungsdaten des Benutzers mit:

System.Gadget.Settings.write("###name###", true);

und gelesen werden die Daten mit:

var txt = System.Gadget.Settings.readString("###name###");

Der Parameter "###name###" ist dabei ein frei wählbarer String für den Namen der Variablen, unter dem die Zeichenkette gespeichert wird (siehe auch unter Gadget Development Overview).

Aber wo geht das Zeugs nun hin?

Die für Endanwender interessante Frage ist nun: Wo speichern die obigen Methoden denn nun die Daten. Oder anders gefragt: Wenn ich eine Notiz im betreffenden Windows Vista-Gadget eintippe, wie könnte ich die sichern bzw. wo kann ich nachsehen, ob die Daten noch da sind?

Im Web ist da nichts beschrieben und ich habe etwas gesucht, bis ich die Lösung hatte. Der Ansatz ist eigentlich ziemlich trivial (quick and dirty). Da Gadgets keine Speicheroptionen haben, um Daten in Dateien zu schreiben, haben die Note-Gadget-Entwickler die obigen System.Gadget.Settings.readString()- und System.Gadget.Settings.writeString()-Methoden benutzt. Die Variablen werden damit in der Settings.ini gespeichert, die im Ordner C:\Benutzer\<Konto>\AppData\Local\Microsoft\WindowsSidebar zu finden ist. In der .ini-Datei findet sich für jede angelegte Variable ein Abschnitt, in dem die Daten als String kodiert werden. Sobald der Anwender die .ini-Datei im Windows-Editor öffnet, kann er auf die Daten zugreifen.

Die Sicherungsfunktion von Vista (Programm Sichern und Wiederherstellen sorgt also dafür, dass die Daten mit gespeichert werden.
Weitere Hintergrundinfos, Tipps und Tricks finden sich in meinen Tricks-Büchern (z.B. Magnum Windows Vista Home Premium Tricks).

Günter Born
www.borncity.de
the source of fine computer books,
because technology counts!