Dienstag, 24. Januar 2006

hybride Anwendungen - Anwendungen für das .NET Framework und das .NET Compact Framework

Manchmal gibt es Anforderungen an Applikationen, welche im ersten Augenblick sich ganz einfach anhören. Dazu gehört, das eine Compact Framework (CF) Anwendung auch auf dem Desktop laufen soll. Doch was passiert, wenn diese Applikation nur eine Instanz haben darf? Okay, unter dem Pocket PC kein Thema, da funktioniert es eh so, dass nur eine Instanz läuft, und bei wiederholtem Auruf, die Anwendung in den Vordergrund geholt wird. Was ist aber mit dem Desktop, wenn es sich um die gleich Anwendung handelt und man nur die Methoden des CF zur Verfügung hat? Dann sind die üblichen Methoden mit Mutex etc. ganz schnell passé.

Eine passable Möglichkeit ist die Nutzung von "FindWindow" aus der user32.dll. Diese ist zwar nur auf dem Desktop verfügbar (beim PPC befindet sich die Funktion in der coredll.dll), was jedoch nicht weiter stört.

Über einen DLLImport ist die Funktion aus der user32.dll schnell eingebunden. Was passiert aber, wenn diese Funktion im PPC aufgerufen wird? Die Antwort ist einfach: GARNICHTS. Diese Funktion wird einfach übergangen Um es jedoch sauberer zu machen, sollte man über System.Environment die entsprechende Plattform zurückgeben lassen, und nur bei Bedarf per if/else ausführen lassen.

Über diese kleine Hilfe ist es ganz schnell möglich, auch auf dem Desktop eine Applikation zu bauen, welche nur eine Instanz besitzt.