Software

Gør dine programmer Windows 7-lækre

Det er ikke så svært at benytte de nye brugerfladeelementer i Windows 7 fra .Net-programmer.

Windows 7 er på gaden, og det giver nye muligheder i programmernes brugerflader. Mens store dele af syveren vel nærmest kan betegnes som 'Vista Reloaded', er der også nye og gode påfund fra Microsofts side.
Ét element er den nye taskbar, eller programbjælke. Den viser frimærke-udgaver af et programs åbne vinduer, når musen holdes over knappen. Når der højreklikkes på programikonet i taskbaren, kommer en såkaldt jumplist frem, der viser de seneste filer, som har været åbnet med programmet. Jumplisten kan også indeholde opgaver eller 'tasks', som programmet kan definere. I Windows Media Player er der for eksempel to sådanne opgaver, 'Resume previous list' og 'Play all music'.
Microsoft holder stadig fast i, at når det handler om Windows, skal der programmeres i den gamle Win32-model, hvor sproget hedder C++, og managed code er en by i Rusland. Men samtidig prædiker softwaregiganten, at vi alle skal skrive programmer med .Net og C#. Heldigvis er det ikke så svært at skabe broer mellem .Net-applikationer og COM-teknologien, som Windows i høj grad stadig bygger på. Og i forbindelse med nyhederne i grænsefladen i Windows 7 har Microsoft været så flink at skrive et .Net-bibliotek, som gør det muligt at udnytte nogle af de nye muligheder fra .Net-programmer helt uden COM-wrappere eller andre krumspring.

En jumplists anatomi

Biblioteket hedder 'Windows API Code Pack for Microsoft .NET Framework' og kan findes på MSDN, nemmest ved bare at søge på Google. Biblioteket nåede version 1.0 i august og skulle således være stabilt nok til daglig brug. API'et giver adgang til en overvældende mængde Windows-funktioner, lige fra batteristyring til sprogfunktioner. Også med i pakken er altså de nye Windows 7-muligheder som Jump Lists og Tabbed Thumbnails, som er den omtalte frimærkevisning, samt andre godter fra det nye system. Det hele er pakket ind i et civiliseret C#-API, som er til at have med at gøre. API-dokumentationen skal downloades separat. Det gøres fra samme download-side som code-pack'en, og den hedder WindowsAPICodePackHelp.
Lad os se nærmere på, hvorledes et programs jumplist konstrueres. Før vi kan rode med jumplisten, skal vi have et gyldigt, aktivt vindue på taskbaren. Dernæst skal man være opmærksom på, at de filer, man linker til i en jumplist, skal være registreret med filtypen associeret til programmet, og filen skal eksistere.

Det skal nævnes, at det i version 1.0 af code pack'en ikke er muligt at sende meddelelser ved at bruge metoder i programmet fra et emne i jumplisten. Hvis man vil det, skal man benytte WndProc-funktionaliteten til at opsnappe de fødte meddelelser fra Win32-dyret. Men mon ikke muligheden dukker op i en kommende opdatering – man har da lov at håbe.

Code pack'en kommer med en lang række eksempler på anvendelser, og den, vi skal se på her, findes i mappen Samples/Shell/TaskbarDemo/CS. Den indeholder en række Visual Studio-projekter, som også kan åbnes i den gratis Express-udgave. Åbn TaskbarDemo og kør den med Ctrl+F5. Første gang køres et hjælpescript, der registrerer .txt-filer til programmet, for ellers kan .txt-filer ikke puttes ind i jumplisten. Det er kun for eksemplets skyld, at der er tale om tekstfiler.
Åbn TaskbarDemoMainForm.cs og vælg View Code for at se koden bag formen. Kig efter den indfoldede kode under Custom Categories, som er der, hvor kategorier og emner tilføjes jumplisten.
Lad os gennemgå et mere komprimeret eksempel (Eks. 1). Jumplist-kategorier oprettes lige ud ad landevejen med constructoren JumpListCustomCategory. I metoden Form1_Shown skabes en jumplist, som er knyttet til hovedvinduet. Så tilføjer vi en exe-fil som en task og en tekstfil til jumplisten. Sværere er det ikke.
Der er meget mere information om jumplists og de andre Windows 7-muligheder i Windows API Code Pack hos MSDN.