|
Searched for : The Lost Files
Normalerweise erfolgt vor einem Release eine neuen Software irgendeine Form einer Ankündigung. Nicht so beim Windows Mobile 6.5 SDK, welches seit dem 22.1.2010 als Download verfügbar ist. [Update] Mehrere MVPs verbrachten das Wochenende ihre Systeme neu aufzusetzten, nachdem die SDK Installation einige Fehler verursacht. [/Update]Dieses scheint das bisher verfügbare DTK abzulösen. Leider hatte ich noch keine Zeit es mir anzuschauen, so dass ich hier nur das wiedergeben kann, was ich bisher darüber im Netz gefunden habe. Das SDK gibt es, wie bei früheren Versionen auch, klassisch für Classic (ohne Touchscreen) als auch für Professional (mit Touchscreen) Geräte. Die einzelnen Downloadpakete stehe für die folgenden Sprachen zur Verfügung: - 0804 CHS Chinese Simplified
- 0409 USA English
- 0407 GER German
- 040c FRA French
- 0410 ITA Italian
- 0c0a ESN Spanish
- 0411 JPN Japanese
Neben zusätzliche Dokumentation, Beispielen und Headerfiles beinhaltet es noch die Emulatorimages, wie auch Erweiterungen für Visual Studio 2008. Visual Studio 2010 wird, wie bekannt, nicht unterstützt. Eine der Visual Studio Erweiterungen ist für das Erstellen und Debuggen von Widgets. Nick Randolph, MVP für Device Application Development hat bereits einen Post zu diesem Thema veröffentlicht. [Update]Peter Foot berichtet via Facebook, dass es sich bei den Emulatorimages um Windows Mobile in der Version 6.5.3 handelt. Darüber hinaus scheint es so, dass das Windows Mobile 6 SDK vor der Installation des neuen SDKs deinstalliert werden sollte. Der Grund hierfür ist, dass ansonsten alle anderen Plattformen und Emulator Images aus dem Visual Studio verschwinden. Auch sind diese dann anscheinend nicht mehr im Device Emulator Manager vorhanden.
Wie es zu erwarten war, ist die Entwicklecommunity hinsichtlich Multitouch aktiv. So gibt es mittlerweile eine .NET CF Bibliothek von einem Entwickler namens SciLor, wodurch eigene Anwendungen Multitouch unterstützen können. Zwar ist die Entwicklung noch in den Kinderschuhen – ein erster Schritt ist jedoch getan. Die Bibliothek, sowie ein paar Samples finden sich hier.
Ich wünsche allen Lesern ein frohes neues Jahr und hoffe, daß alle die Feiertage gut überstanden haben. Auch ich habe diese Tage sehr genossen und im Kreise der Familie und Freunde mich gut erhohlt. Den ersten Blogpost nehme ich daher auch zum Anlass meine Gedanken zum letztem Jahr und zum eben angefangenen zu äussern. Was war2009 war ein durchwachsenes Jahr. Als ich zum ersten Mal einen Blick auf Windows Mobile 6.5 werfen durfte, war mein erster Gedanke "Das kann doch nicht deren Ernst sein...". Ich tat mich anfangs sehr schwer damit, das neue Windows Mobile zu mögen. Doch der Eindruck änderte sich. Viele gehen heute immer noch davon aus, daß 6.5 der "iPhone Killer" ist. Das war jedoch nie der Gedanke bei dieser Version, weswegen ich mir für dieses Jahr wünsche, hierüber nicht mehr über dieses Thema diskutieren zu müssen, wie ich es beispielsweise letztes Jahr auf der TechEd in Berlin zu Genüge tat. Es ging bei 6.5 immer darum, eine verbesserte Bedienung zu bieten; nach Möglichkeit ohne Stift und am Besten mit dem Daumen. Der neue "Heute-Bildschirm" alias CHome hat dies als Erstes gut ermöglicht. Zwar kann man offiziell keine Plugins hierfür selbst erstellen, doch findet man im Internet einige Beschreibungen, wie es doch geht. Die neuen und größeren Menüs sind auch sehr sinnvoll. Die Gesture API, mittlerweile auch durch diverse gute Wrapper im managed Code möglich, ermöglicht es mittels Programmierung auch, diese Schnittstelle in seiner eigenen Anwendung zu verwenden und sie somit aufzupepppen. Da das System jedoch erst spät im Jahr zur Verfügung stand, wo Simon Hackfort, Patrick Getzmann und ich auch in unserer zugehörigen Webcastserie die Neuerungen vorgestellt haben, nahmen wir das erste Halbjahr eher dazu Best Practices in einer anderen Webcastserie darauf einzugehen. Diejenigen, die nicht genug von der Enttwicklung für Windows Mobile und Windows Embedded CE bekommen konnten, trafen sich Anfang Dezember auf der MobileGuru konferenz. Hier wurden neben Einsteigerthemen auch Themen behandelt, welche selbst für mich neu waren und ich mir diese Session somit gerne angesehen habe. Kurz zusammengefasst: 2009 war für mich neben Windows Mobile 6.5 das Jahr, wo es darum galt sich mit aktuellen Technologien zu beschäftigen, als auch zu schauen, was die anderen Hersteller aktuell machen. Was wirdAnderen Systeme haben aufgeholt: Android scheint langsam erwachsen zu werden - das iPhone OS kann ztem Jahr auch endlich Copy & Paste.  Ich denke, dass bbei Android dieses Jahr noch viel gefeilt werden wird. Beim iPhone mag ich jedoch keine Prognose machen. Zwar hört man Gerüchte, dass dieses Jahr ein neues 4G Gerät kommen soll was wesentliche Hardwareverbesserungen haben soll doch sehe ich persönlich aktuell nicht, wohin es mit dem OS gehen soll. Es hat zwar Detailverbesserungen bis zur Version 3.0 erfahren und wurde aufpoliert. Doch auch das System wird alt - das Basisbetriebssystem hat sich gegenüber der ersten Version nur marginal verändert. Ich höre immer öfter, dass viele Personen im privatem Umfeld auf andere Geräte umsteigen; Firmen begreifen auch immer öfter, dass das iPhone im Consumerbereich angesiedelt ist und für den Businessbereich nur in einem bestimmten Umfang geeignet ist. Viel interessanter finde ich da den Umstand, dass man seitens Microsoft nichts konkres zu einem Nachfolger hört. Es wird zwar mit Hochdruck daran gearbeitet und es soll riesig werden - mehr Informationen gibt es jedoch nicht. Bleibt abzuwarten, wann und was man dazu hören wird. Wer letztes Jahr nicht an der MobileGuru konferenz teilnehmen konnte, wird wahrscheinlich im 2. Halbjahr diesen Jahres eine Chance haben. 2010 hat jedoch bereits super angefangen. Ich freue mich sehr, dass es neben Torsten Weber und mir seit heute einen neuen Device Application Development MVP insbesondere für native Code in der DACH-Region gibt: Patrick Getzmann. Herzlichen Glückwunsch Patrick. Es freut mich sehr. So viel zu meinem persönlichen Rückblick und einer kleinen Vorschau auf dieses Jahr. Ich wünsche daher nochmal allen Lesern ein frohes neues Jahr und hoffe, dass wir alle dieses Jahr wieder interessantes erleben werden.
Sollte man die Weihnachtsgeschenke für seine Lieben bereits gekauft haben, so kommt man meist zum eher unangenehmen Teil: Dem Verpacken. Dies gilt jedoch auch für Anwendungen, die auf einem mobilen Gerät installiert werden sollen. Hierfür gibt es das CAB-Datei Format. Um eine entsprechende Installationsdatei zu erstellen, nehmen wir einmal an, dass wir die zu verpackenden Dateien unter c:\HelloWorld abgelegt haben. Die Dateien, welche dort vorliegen müssen, sind die HelloWorld.exe, welche installiert werden soll, sowie die HelloWorld.inf Datei, welche die Informationen für den CabWizard vorbehält, um eine CAB-Datei erzeugen zu können.
Hier nun der Inhalt der INF-Datei dazu. Hierbei hat die Programmiersprache diesmal keine Relevanz:
[SOURCE FILE] Name=CHelloWorld.cab Path=C:\HelloWorld\HelloWorld.cab AllowUninstall=TRUE
[Version] Signature="$Chicago$" CESignature="$Windows CE$" Provider="Company"
[CEStrings] AppName="HelloWorld" InstallDir="%CE1%\CHelloWorld"
[CEDevice] ProcessorType=0 VersionMin=0.0 VersionMax=0.0 BuildMin=0 BuildMax=0
[SourceDisksNames] 1=,Source1,,
[SourceDisksFiles] "HelloWorld.exe"=1
[CopyFiles1] "HelloWorld.exe",,,0x00000001
[DestinationDirs] CopyFiles1=0,"%CE1%\HelloWorld"
[DefaultInstall] CopyFiles=CopyFiles1
Wird nun auf der Kommandozeile der Befehl "c:\Program Files\Microsoft Visual Studio 9.0\SmartDevices\SDK\SDKTools\cabwiz.exe" "Company HelloWorld2.inf" ausgeführt (Pfad ist natürlich hinsichtlich seinen Gegebenheiten anzupassen), so findet sich im entsprechenden Zielordner die CAB-Installationsdatei wieder. Weitere Informationen zum CAB-Wizard erhalten Sie hier:http://msdn.microsoft.com/de-de/library/cc433670%28VS.71%29.aspx
Das war es mit dem Adventskalender für dieses Jahr und wünschen Ihnen ein frohes Fest.
Patrick & Peter
So kurz vor weihnachten sollte der Weihnachtsbaum hell leuchten. Warum auch nicht dann die LED des Bluetoothmoduls des Gerätes zum Blinken bringen? Nichts einfacher als das, in dem man das Bluetooth Modul aktiviert.
Dabei gilt zu beachten, dass dieses Beispiel nur auf Geräten funktioniert, die den Microsoft Bluetooth Stack verwenden.
C++
#include "bthutil.h" #pragma comment(lib, "Bthutil.lib")
...
DWORD dwMode = 0; BthGetMode(&dwMode); if(dwMode==BTH_POWER_OFF || dwMode==BTH_CONNECTABLE) { BthSetMode(BTH_DISCOVERABLE); }
C#
In C# ist es auch an dieser Stelle nötig, mittels P/Invoke auf die nötige DLL zu zu greifen, um auf die entsprechenden Informationen zu erhalten. Somit hier das Snippet:
... public enum RadioMode { Off = 0, Connectable = 1, Discoverable = 2 }
static class Program { [DllImport("BthUtil.dll")] private static extern int BthGetMode(out RadioMode dwMode);
[DllImport("BthUtil.dll")] private static extern int BthSetMode(RadioMode dwMode);
/// <summary> /// The main entry point for the application. /// </summary> [MTAThread] static void Main() { RadioMode rm = RadioMode.Off; BthGetMode(out rm); if (rm == RadioMode.Off || rm== RadioMode.Connectable) { BthSetMode(RadioMode.Discoverable); } } } ...
Patrick & Peter
Wer dem Weihnachtstress ein wenig aus dem Weg gehen möchte vermeidet es am besten die Geschenke auf althergebrachte Weise in der Stadt oder sonstigen Einkaufläden zu besorgen. Nichts ist entspannter als ein Einkaufbummel im Internet. Und wenn man die Einkauftour rechtzeitig beginn bekommt auch keinen Stress mit den Lieferzeiten. Um aber trotzdem an sein Paket zu kommen muss man natürlich seine eigene Adresse mitteilen. Gleiches gilt auch für Anwendung die auf Netzwerkdienste zugreifen. Oftmals muss die Anwendung die eigene IP Adresse nicht kennen, da es durch die zugrunde liegenden Protokolle automatisch passiert. Ab und an kann es aber vorkommen dass diese Information benötigt wird. Dazu kann das folgende Codeschnipsel verwendet werden:
C++
#include "iphlpapi.h" #pragma comment(lib, "Iphlpapi.lib")
...
//Wir listen mal etwas mehr auf als nur die aktuellen IPs. //Adapter Information anlegen PIP_ADAPTER_INFO pAdapterInfo; ULONG lRetLen = sizeof(PIP_ADAPTER_INFO); //Benötigte Speichergrösse holen DWORD dwRet = GetAdaptersInfo(NULL,&lRetLen); //Informationen zu allen Adaptern holen pAdapterInfo = (PIP_ADAPTER_INFO) malloc (lRetLen); dwRet = GetAdaptersInfo(pAdapterInfo,&lRetLen); if(dwRet == ERROR_SUCCESS) { //Informationen nur für den aktuellen Adapter PIP_ADAPTER_INFO pCurrentAdapter = pAdapterInfo; while (pCurrentAdapter != NULL ) { //Systemindex printf("Adapterindex: %i\n",pCurrentAdapter->Index); //Beschreibung printf("Beschreibung: %s\n",pCurrentAdapter->Description); //IP Addresse printf("IP: %s\n",pCurrentAdapter->IpAddressList.IpAddress.String); //Gateway printf("Gateway: %s\n",pCurrentAdapter->GatewayList.IpAddress.String); //Subnet printf("Subnet: %s\n",pCurrentAdapter->IpAddressList.IpMask.String); //Erweiterte IP Infos anlegen PIP_PER_ADAPTER_INFO pPerAdapterInfo; lRetLen = sizeof(PIP_PER_ADAPTER_INFO); //Benötigte Speichergrösse holen dwRet = GetPerAdapterInfo(pCurrentAdapter->Index,NULL,&lRetLen); //Erweiterte IP Infos abfragen pPerAdapterInfo = (PIP_PER_ADAPTER_INFO) malloc (lRetLen); dwRet = GetPerAdapterInfo(pCurrentAdapter->Index,pPerAdapterInfo,&lRetLen); //DNS1 printf("DNS: %s\n",pPerAdapterInfo->DnsServerList.IpAddress.String); //DNS2 if(pPerAdapterInfo->DnsServerList.Next != NULL) printf("DNS2: %s\n",pPerAdapterInfo->DnsServerList.Next->IpAddress.String); //Interface anlegen MIB_IFROW IfRow; memset( &IfRow, NULL, sizeof( MIB_IFROW ) ); //Index zum abfragen setzen IfRow.dwIndex = pCurrentAdapter->Index; //Interface abfragen GetIfEntry(&IfRow); //MAC Adresse printf("MAC: %02x-%02x-%02x-%02x-%02x-%02x\n",IfRow.bPhysAddr[0], IfRow.bPhysAddr[1], IfRow.bPhysAddr[2], IfRow.bPhysAddr[3], IfRow.bPhysAddr[4], IfRow.bPhysAddr[5]); //Den Namen(ClassID) brauchen wir auch... printf("ClassID: %s\n",pCurrentAdapter->AdapterName); //Nächster Adapter pCurrentAdapter = pCurrentAdapter->Next; } }
C#
In C# geht dies ebenfalls ganz einfach, auch wenn es wild aussieht:
using System.Net; ... IPHostEntry enty = Dns.GetHostEntry(Dns.GetHostName()); foreach (IPAddress ipadress in enty.AddressList) { Console.WriteLine("IP: " + ipadress.ToString()); }
Patrick & Peter
Nach einem längeren Abend am Glühweinstand kann es in seltenen Fällen dazu kommen, dass man seinen eigenen Namen am nächsten Morgen vergessen hat. Gut, wenn dieser im mobilen Gerät gespeichert ist. Das folgende Beispiel funktioniert natürlich nur dann, wenn der Benutzername in den Besitzerinformationen hinterlegt wurde.
C++
//State & Notification Broker Header Datei #include "snapi.h" //Registry Hilfsfunktionen #include "regext.h"
...
//Per Registry Helfer Funktion und den State&Notification Broker Konstanten //die Besitzerinformationen auslesen. Setzt natürlich voraus das der Anwender diese Informationen auch eingegeben hat. TCHAR szUserName[MAX_PATH] = L"\0"; if(RegistryGetString(SN_OWNERNAME_ROOT,SN_OWNERNAME_PATH,SN_OWNERNAME_VALUE,szUserName,MAX_PATH)==S_OK) _tprintf(L"Username: %s\n",szUserName); else _tprintf(L"Fehler bei RegistryGetString\n");
C#
Mittels SnAPI ist das Auslesen mittels managed Code ganz einfach, wenn zuvor die Verweise zu den Bibliotheken Microsoft.WindowsMobile und Microsoft.WindowsMobile.Status hinzugefügt wurden.
Somit besteht das Snippet dann wieder aus einer Zeile ausführbarem Code:
using Microsoft.WindowsMobile.Status; ... Console.WriteLine((string)SystemState.GetValue(SystemProperty.OwnerName));
Patrick & Peter
Bei einem leckerem warmen Kakao trifft man manchmal Freunde, die man lange nicht mehr gesehen, oder jedoch aus den Augen verloren hat. Also schnell die Telefonnummern ausgetauscht, bevor man sich wieder verliert. Wenn man aber seine eigene Nummer nicht auswendig kennt und sich auch nicht selbst als Kontakt aufgeführt hat (Wobei dies zum Versenden seiner eigenen Kontaktdaten sehr praktisch ist) muss man sich mühsam über die Menüdialoge der Telefonapplikation zur eigenen Rufnummer vorarbeiten. Wäre es also nicht schön wenn man die Rufnummer aus dem eigenen Code heraus anzeigen lassen könnte? Hier das passende Codeschnipsel dazu:
Es gilt jedoch zu beachten, dass die vorgestellte Funktionalität möglicherweise nicht bei allen funktioniert, da dies ggfs. sogar providerabhängig ist.
C++
//Da dies ein Snippet ist inkludiere ich hier einfach die komplette CPP Datei des SDK Samples #include "C:\Programme\Windows Mobile 6 SDK\Samples\Common\CPP\Win32\GetPhoneNumber\GetPhoneNumber.cpp"
...
//Der Aufruf setzt vorraus das die Telefonnummer in die SIM einprogrammiert //ist. Wird ggf. nicht von jeder SIM bzw. Provider unterstützt. //Durch verwendung von AT Kommandos ist diese Nummer auch //editierbar. SHGetPhoneNumber(szNumber, MAX_LOADSTRING, 1); _tprintf(L"Nummer: %s\n",szNumber);
C#
In .NET ist auch diese Aufgabe wieder einmal nicht ganz trivial zu lösen. Um Ihnen jedoch Menge Tipparbeit zu ersparen, laden Sie sich bitte die MSDN Bibliothek zur Phonefunktionalität unter http://www.microsoft.com/downloads/details.aspx?FamilyId=40CF068B-66CA-4F26-87A1-15B67F2F7AE6&displaylang=en herunter, fügen die dort enthaltene Klasse Phone.cs ihrem Projekt hinzu. Da der hinzugefügte Code jedoch direkte Speicheroperationen durchführt, ist es notwendig in ihren Projekteigenschaften die Option "Unsicheren Code zulassen" zu aktivieren.
Der zu erstellende Code reduziert sich somit auf eine Zeile auführbaren Code.
... using Microsoft.Wireless; ... Console.WriteLine(Sim.GetPhoneNumber().Address); ...
Patrick & Peter
Gerade in der Weihnachtszeit kommt man in der Stadt kaum voran, ohne auf irgendwelchen dynamischen Plakatwänden auf die aktuellsten Angebote aufmerksam gemacht zu werden. Anstatt jedoch Werbung darzustellen, ist es unter Windows Mobile manchmal durchaus sinnvoll, den Benutzer mithilfe einer Notification auf eine bestimmte Gegebenheit hinzuweisen.
C++
// {070A46B7-1C4F-441e-AAE2-5BD96D03477A} static const GUID CLSID_MyBubble = { 0x70a46b7, 0x1c4f, 0x441e, { 0xaa, 0xe2, 0x5b, 0xd9, 0x6d, 0x3, 0x47, 0x7a } };
...
//SHNOTIFICATIONDATA Struktur anlegen SHNOTIFICATIONDATA bubble = {0}; bubble.cbStruct = sizeof(bubble); bubble.dwID = 1; //Anzeigen bis der Benutzer es ausblendet bubble.npPriority = SHNP_INFORM; bubble.csDuration = -1; bubble.hicon = NULL; //Eine eigene GUID angeben bubble.clsid = CLSID_MyBubble; bubble.grfFlags = 0; //Inhalt festlegen bubble.pszTitle = L"Türchen Nummer 16"; bubble.pszHTML = L"<html><body>Das ist Türchen Nummer <b> 16</b><br><br> in unserem Adventskalender.</body></html>"; //Softkey festlegen bubble.rgskn[0].pszTitle = L"Ausblenden"; bubble.rgskn[0].skc.wpCmd = 1; SHNotificationAdd(&bubble);
...
//Wir blenden es jetzt selber aus SHNotificationRemove(&CLSID_MyBubble,1);
C#
In .NET gibt es in der Microsoft.WindowsCE.Forms Bibliothek eine Notification-Klasse, die einen Wrapper für verwalteten Code darstellt, jedoch funktioniert diese ein wenig anders. Anstatt nun den Softkey einstellen zu können, verwendet dieses Beispiel den speziellen Namen des HTML-Inputbuttons "cmd:1", welcher die Notification schließt. Ausgelöst wird die Notifikation durch eine Schaltfläche.
Hier nun das Snippet:
... Notification nf = new Notification(); ...
private void btnNotify_Click(object sender, EventArgs e) { nf.InitialDuration = 0; nf.Critical = false; nf.Caption = "Türchen Nummer 16"; nf.Text = "<html><body>Das ist Türchen Nummer <b> 16</b><br><br> in unserem Adventskalender.<br><input type=button name='cmd:1' value='Schliessen'></body></html>"; nf.Visible = true; ... //Wir blenden es nun selbst aus nf.Visible = false; }
Patrick & Peter
Je nachdem wie groß der Familien und Freundeskreis muss man sich gerade während der Vorweihnachtszeit eine ganze Menge an Geschenkideen, Weihnachtsmarktbesuchen, Weihnachtsfeiern und sonstigen Termin notieren. Wohl dem der ein Windows Phone sein eigen nennt und jederzeit Zugriff auf seine Termine, Notizen und Kontaktdaten hat. Nichts ist jedoch ärgerlicher als das man bei der Eingabe von Text noch manuell die Tastatur anzeigen lassen muss nachdem man in ein Textfeld geklickt hat. Wie man ein solches Verhalten in seiner eigenen Applikation verhindern kann zeigen die folgenden Codeschnipsel:
C++
//Keyboard anzeigen (bspw. wenn wir den Focus bekommen) SHSipPreference(hwndEdit,SIP_UP); ... //Keyboard ausblenden(bspw. wenn wir den Focus verlieren) SHSipPreference(hwndEdit,SIP_DOWN);
C#
Damit wir den Status des Softkeyboards, bzw. die SIP sauber setzen können, gilt es dieses Mal eine mobile Windows Forms Anwendung zu erstellen. Zusätzlich ist es notwendig einen Verweis auf die Bibliothek "Microsoft.WindowsCE.Forms" hinzuzufügen. Wurden 2 Schaltflächen ebenfalls hinzufgefügt, so sieht der zu erstellende Code, wie folgt aus:
using Microsoft.WindowsCE.Forms; ... InputPanel panel = new InputPanel();
private void btnSHowSIP_Click(object sender, EventArgs e) { panel.Enabled = true; }
private void btnHideSIP_Click(object sender, EventArgs e) { panel.Enabled = false; } ...
Patrick & Peter
Jeder, der mit der Entwicklung von mobilen Anwendungen beginnt, sollte sich mit der Plattform und dem Betriebssystem, für welches er programmieren möchte, auskennen. Bei der Vielzahl der enthaltenen Funktionen kann man da auch schon mal leicht den Überblick verlieren; Neueinsteiger wissen oft nicht, wo sie ansetzen sollen. Mein geschätzer MVP-Kollege Andreas Erle von World of PPC hat sich diesem Thema angenommen und ein Buch zu diesem Thema geschrieben: Windows Mobile 6.5 für die Computer Bild Reihe des Ullstein Verlags.  Der eine oder andere mag von der Reihe halten, was er will - meiner Meinung nach gibt es kaum ein besseres Buch zu diesem Thema als dieses. Die Beschreibungen sind einfach gehalten und häufig bebildert. Irrtümer sind somit fast ausgeschlossen. Die Themen sind auf 125 Seiten manigfaltig. Hierbei geht es nicht nur um die Bedienung und Einrichtung des Gerätes (bis hin zur Gerätesperre), sondern auch um Themen, wie Verbinden via USB, Bluetooth un Co., sowie mobiles Internet und Installation und Deinstallation von Anwendungen. Auch die Verwaltung von Kontakten und Terminen ist ein Thema, genauso wie die TouchFlo-Oberfläche vieler HTC Geräte. Dieses Buch ist für dieses Themengebiet super, auch gerade dann, wenn die oft kryptische Beschreibung des Handbuches nicht weiterhilft. Das Buch selbst erhält man beispielsweise hier bei Amazon zu einem recht günstigen Preis. Ich finde das Buch super und werde es Einsteigern weiterempfehlen!
Nicht nur Weihnachtsgeschenke sollten einzigartig sein, sondern auch Geräte um diese beispielsweise für Kopierschutzfunktionen unterscheiden zu können. Daher hat jedes Windows Mobile Gerät eine eindeutige und einmalige ID. Diese über die KernelIOControl Funktion abzufragen ist allerdings nur für privilegiert signierte Applikationen zulässig. Als Ausgleich dafür gibt es jedoch die GetDeviceUniqueID Funktion. Allerdings liefert diese nicht dieselbe ID zurück wie der KernelIoControl Aufruf, sondern anhand von der Applikation übergeben Zusatzdaten einen eindeutigen Hash der ID. Ruft man mit seiner Anwendung also die GetDeviceUniqueID Funktion immer mit den gleichen Parametern auf erhält man auch immer den gleichen einzigartigen Hash auf dem Gerät, selbst wenn es resettet oder sogar geflasht wird. Hier nun der Codeschnipsel dazu:
C++
#include "getdeviceuniqueid.h"
…
//GetDeviceUniqueID gibt nicht die eigentlich ID zurück sondern eine //eigene ID die aus der Device ID sowie von der Anwendung zusätzlich //übergebenen Daten besteht. Solange die Zusatzdaten gleich sind erhält //Die Anwendung auch immer die selbe ID zurück, selbst nach einem Firmwareupdate #define APPDATA "MEINAPPDATAUID" #define APPDATALEN 14
…
//Device ID Variable anlegen BYTE bDeviceID[GETDEVICEUNIQUEID_V1_OUTPUT]; DWORD cbSize = sizeof(bDeviceID); //DeviceID Hash abfragen HRESULT hr = GetDeviceUniqueID(reinterpret_cast<PBYTE>(APPDATA), APPDATALEN, GETDEVICEUNIQUEID_V1, bDeviceID, &cbSize);
C#
Eigentlich könnte man sich bereits denken, dass man an dieser Stelle auch P/Invoke benötigen wird, um diese Funktionalität aus verwaltetem Code heraus zu lesen.  Hier somit das Snippet:
class Program { [DllImport("coredll.dll")] private extern static int GetDeviceUniqueID([In, Out] byte[] appdata, int cbApplictionData, int dwDeviceIDVersion, [In, Out] byte[] deviceIDOuput, out uint pcbDeviceIDOutput);
private static byte[] GetDeviceID(string AppString) { // Call the GetDeviceUniqueID byte[] AppData = Encoding.Unicode.GetBytes(AppString); int appDataSize = AppData.Length; byte[] DeviceOutput = new byte[20]; uint SizeOut = 20; GetDeviceUniqueID(AppData, appDataSize, 1, DeviceOutput, out SizeOut); return DeviceOutput; }
static void Main(string[] args) { byte[] id = GetDeviceID("MEINAPPDATAUID"); } }
Patrick & Peter
Beim Versenden der Nikolaus SMS gestern jemanden vergessen? In diesem Fall sollte man dringend zum Telefon greifen und denjenigen direkt anrufen. Da einfach nur Telefonieren ein wenig zu simpel wäre hier noch ein Codeschnipsel wie man den Anruf aus seiner Anwendung heraus starten kann:
C++
#include "astdtapi.h" #pragma comment(lib, "cellcore.lib")
…
tapiRequestMakeCall (L"+49xxxxxxxx",NULL,L"Nikolaus",NULL);
C#
In verwalteten Anwendungen geht dies genauso einfach, wenn man einen Verweis zur Bibliothek „Microsoft.WindowsMobile.Telephony“ vorab hinzufügt. Leider lässt sich der Anzeigename hier nicht vorgeben. Der boolsche Wert beschreibt, ob der Anwender vorab gefragt werden soll, ob er den Anruf tätigen möchte.
static void Main(string[] args) {
Microsoft.WindowsMobile.Telephony.Phone myPhone = new Microsoft.WindowsMobile.Telephony.Phone(); myPhone.Talk("0123456789", true); }
Patrick & Peter
Heute ist Nikolaustag! Wenn das mal kein Grund ist heute allen seinen Freunden und Bekannten eine Nikolaus-SMS zu senden. Womit wir auch schon direkt beim Codeschnipsel wären. Denn heute zeigen wir das senden von SMS über die Windows Mobile API:
C++
#include "sms.h" #pragma comment(lib, "sms.lib")
bool SMSSendSMS(LPCWSTR pcNumber,LPCWSTR pcText) { //SMS API initialisieren HRESULT hr = NULL; SMS_HANDLE SMSHandle = NULL; HANDLE SMSEvent = NULL; hr = SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, &SMSHandle, &SMSEvent); SMS_ADDRESS adr; //SMS Adresse erstellen memset (&adr, 0, sizeof (adr)); adr.smsatAddressType = SMSAT_INTERNATIONAL; lstrcpy(adr.ptsAddress, pcNumber); //SMS Text Struktur erstellen TEXT_PROVIDER_SPECIFIC_DATA tpsd; tpsd.dwMessageOptions = PS_MESSAGE_OPTION_NONE; tpsd.psMessageClass = PS_MESSAGE_CLASS1; tpsd.psReplaceOption = PSRO_NONE; tpsd.dwHeaderDataSize = 0; //SMS senden hr = SmsSendMessage(SMSHandle, NULL, &adr, NULL, (BYTE *)pcText, wcslen(pcText) * sizeof (TCHAR), (BYTE *)&tpsd, 12, SMSDE_OPTIMAL, SMS_OPTION_DELIVERY_NONE,NULL); //SMS API deinitialsieren hr = SmsClose(SMSHandle); return true; }
…
SMSSendSMS(L"+49xxxxxxxxx",L"Alles Gute zum Nikolaustag!");
C#
Das Windows Mobile SDK bietet dem verwalteten Entwickler hier auch wieder eine Bibliothek. Diese (Microsoft.WindowsMobile.PocketOutlook) muss somit als Verweis dem Projekt hinzugefügt werden. Der Rest ist ein Kinderspiel:
using Microsoft.WindowsMobile.PocketOutlook; ... static void Main(string[] args) {
SmsMessage sms = new SmsMessage("+49xxxxxxxxx", "Alles Gute zum Nikolaus") sms.Send(); }
In diesem Sinne alles Gute zum Nikolaustag!
Patrick & Peter
Wer in der Adventszeit mal in die Innenstadt zum Einkaufen geht könnte meinen die Welt steht Kopf. Da man das aber nun mal nicht verhindern kann heißt es also sich anzupassen. Und wenn man schon dabei ist: Warum nicht auch mal die eigene Windows Mobile Anwendung auf den Kopf stellen? Mit folgenden Codeschnipseln ist dies schnell getan:
C++
//DEVMODE Struktur anlegen und säubern DEVMODE devMode; memset(&devMode,0,sizeof(DEVMODE)); devMode.dmSize = sizeof(DEVMODE); //Bildschirmorientierung auslesen devMode.dmFields = DM_DISPLAYORIENTATION; ChangeDisplaySettingsEx(NULL, &devMode, NULL, CDS_TEST, NULL); //Aktuelle orientierung speichern DWORD dwOld = devMode.dmDisplayOrientation; //Bildschirmorientierung setzen devMode.dmFields = DM_DISPLAYORIENTATION; switch(devMode.dmDisplayOrientation) { case DMDO_0: devMode.dmDisplayOrientation = DMDO_180; break; case DMDO_90: devMode.dmDisplayOrientation = DMDO_270; break; case DMDO_180: devMode.dmDisplayOrientation = DMDO_0; break; case DMDO_270: devMode.dmDisplayOrientation = DMDO_90; break; } ChangeDisplaySettingsEx(NULL,&devMode,NULL,CDS_RESET,NULL); //Warten Sleep(15000); //Ursprüngliche orientierung wieder setzen devMode.dmFields = DM_DISPLAYORIENTATION; devMode.dmDisplayOrientation = dwOld; ChangeDisplaySettingsEx(NULL,&devMode,NULL,CDS_RESET,NULL);
C#
Um dies in einer verwalteten Anwendung zu erreichen, gilt es, die Bibliothek „System.WindowsCE.Forms“ als Verweis hinzuzufügen.
using Microsoft.WindowsCE.Forms; … static void Main(string[] args) {
ScreenOrientation currentOrientation = SystemSettings.ScreenOrientation; switch (currentOrientation) { case ScreenOrientation.Angle0: SystemSettings.ScreenOrientation = ScreenOrientation.Angle180; break; case ScreenOrientation.Angle180: SystemSettings.ScreenOrientation = ScreenOrientation.Angle0; break; case ScreenOrientation.Angle270: SystemSettings.ScreenOrientation = ScreenOrientation.Angle90; break; case ScreenOrientation.Angle90: SystemSettings.ScreenOrientation = ScreenOrientation.Angle270; break; default: break; } System.Threading.Thread.Sleep(1500); SystemSettings.ScreenOrientation = currentOrientation; }
Patrick & Peter
If you have ever bugged. why your Listview doesn't have a fancy gardient item selection from your actual themer, nor a nackground image probably wants to take a look at Alex Yakhnins post on his MESDN blog over here! Definitly worth reading!
Die Adventszeit liegt ja bekanntermaßen in der dunklen Jahreszeit. Umso angenehmer das man mit einem Windows Phone ein wenig Licht erzeugen kann, beispielsweise in Form einer Taschenlampenapplikation. Was nützt einem jedoch die beste Taschenlampe wenn nach ein paar Sekunden die Hintergrundbeleuchtung erlischt oder sich der Bildschirm komplett ausschaltet? Mit einem kleinen Griff in die Windows Mobile Trickkiste kann man dies jedoch verhindern. Ein kleiner Hinweis vorweg: Die benötigten APIs sind auf jedem Gerät gleich, lediglich der anzusprechende Treiber kann je nach Hersteller variieren. Als erstes muss man der Hintergrundbeleuchtung mitteilen das Sie doch bitte nicht mehr ausgehen soll. Dies bewerkstelligen wir über die SetPowerRequirement Funktion. Anschließend müssen wir uns noch um das Standbyverhalten kümmern, schließlich soll das Gerät ja nicht einschlafen. Dazu müssen wir den sogenannten Idle-Timer zurücksetzen. Die Funktion dazu nennt sich SystemIdleTimerReset. Hier nun die Schnipsel dazu: C++
#include "pmpolicy.h" #include "pm.h"
…
//Bedingung für die Hintergrundbeleuchtung setzen //BKL1 ist exemplarisch und kann je nach OEM variieren HANDLE hPower = SetPowerRequirement(L"BKL1:", D0, POWER_NAME | POWER_FORCE, NULL, 0); //Zusätzlich muss jetzt noch die IDLE Time umgangen werden //Aktuellen Batterie Status holen SYSTEM_POWER_STATUS_EX pex; memset(&pex,0,sizeof(SYSTEM_POWER_STATUS_EX)); GetSystemPowerStatusEx(&pex,TRUE); //Idle Timeout je nach AC Status abfragen //Dies funktioniert nur wenn der Wert "DisableGwesPowerOff" //unter "[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Power]" != 0 ist. DWORD dwIdleTimeout = 30; BOOL bRet = FALSE; if(pex.ACLineStatus == AC_LINE_ONLINE) bRet = SystemParametersInfo(SPI_GETEXTERNALIDLETIMEOUT,0,&dwIdleTimeout,0); else bRet = SystemParametersInfo(SPI_GETBATTERYIDLETIMEOUT,0,&dwIdleTimeout,0); //Idle Timer verringern oder auf 30 Sekunden setzen if(dwIdleTimeout == 0) dwIdleTimeout = 30; else if(dwIdleTimeout > 5) dwIdleTimeout -= 5; dwIdleTimeout*=1000; //Idle Timer reset (Normalerweise in einem Thread...) /*while (1) { SystemIdleTimerReset(); Sleep(dwIdleTimeout);
}*/ //Bedingung für die Hintergrundbeleuchtung wieder freigeben ReleasePowerRequirement(hPower);
Die Funktionalität in C# darzustellen ist nicht ganz so einfach, da jede angesprochene Funktion mittels P/Invoke angesprochen werden muss. Somit ist der Quellcode in C# ein wenig länger:
C# … public class SYSTEM_POWER_STATUS_EX { public byte ACLineStatus; public byte BatteryFlag; public byte BatteryLifePercent; public byte Reserved1; public uint BatteryLifeTime; public uint BatteryFullLifeTime; public byte Reserved2; public byte BackupBatteryFlag; public byte BackupBatteryLifePercent; public byte Reserved3; public uint BackupBatteryLifeTime; public uint BackupBatteryFullLifeTime;
} public enum DevicePowerState : int {
Unspecified = -1, D0 = 0, // Full On: full power, full functionality D1, // Low Power On: fully functional at low power/performance D2, // Standby: partially powered with automatic wake D3, // Sleep: partially powered with device initiated wake D4, // Off: unpowered } class Program { [DllImport("coredll")] private static extern uint GetSystemPowerStatusEx(SYSTEM_POWER_STATUS_EX lpSystemPowerStatus, bool fUpdate);
[DllImport("coredll", SetLastError=true)] private static extern IntPtr SetPowerRequirement(string DeviceName, DevicePowerState State, uint dwDeviceFlags, string Name, ulong Reserved);
[DllImport("coredll.dll", SetLastError=true)] static extern int ReleasePowerRequirement(IntPtr handle);
[DllImport("coredll.dll", SetLastError=true)] static extern void SystemIdleTimerReset();
[DllImport("coredll.dll")] internal static extern int SystemParametersInfo( int uiAction, int uiParam, ref int pvParam, int fWinIni);
public const int SPI_SETBATTERYIDLETIMEOUT = 251; public const int SPI_GETBATTERYIDLETIMEOUT = 252; public const int SPI_SETEXTERNALIDLETIMEOUT = 253; public const int SPI_GETEXTERNALIDLETIMEOUT = 254;
static void Main(string[] args) {
IntPtr handle = SetPowerRequirement("BKL1:", DevicePowerState.D0, 1, null, 0); int dreisig = 30; // reset the system's idle time every 10 seconds so it doesn't suspend Timer timer = new Timer(IdleReset, null, 0, 10000);
SYSTEM_POWER_STATUS_EX status = new SYSTEM_POWER_STATUS_EX(); if (GetSystemPowerStatusEx(status, false) == 1) { if (status.ACLineStatus == (byte)1) //1 == Plugged in { SystemParametersInfo(SPI_GETEXTERNALIDLETIMEOUT, 0, ref dreisig, 0); } else //Plugged out { SystemParametersInfo(SPI_SETBATTERYIDLETIMEOUT, 0, ref dreisig, 0); }
}
ReleasePowerRequirement(handle); } private static void IdleReset(object state) { // no suspend SystemIdleTimerReset(); } } …
Patrick & Peter
P.S.: Der gewiefte Bastler stellt 4 Geräte in einen Adventskranz und startet die Anwendung, so dass spätestens am 4. Advent auch alle Kerzen… ich meine natürlich Displays (solange die Batterie ausreicht) freudig leuchten.
Have you ever been tired of spinning a real bottle for gaming "Spin the bottle"? Why not using Germanys No.1 application in Marketplace's ranking for doing this? This application by LieberLieber Software GmbH is free of charge and makes even use of a G-Sensor, if available. The companies homepage can be found here.
Since November 2009 Paul Diston is assembling a link list including short description on blogs, articles and other ressources regarding Windows Mobile and the .NET CF. A look through the list offers a great index over there. Good job, Paul. The (actually growing) list can be found here. Let's see if and when Paul will include my blog as a ressource.  You can follow Paul on Twitter as well through @smartmobidevice as well.
Geschenke bestellt man ja mittlerweile im Internet. Und Dank Windows Mobile auch von unterwegs . Wäre es da nicht interessant zu wissen ob die aktuelle Empfangsstärke des Mobilfunksignals ausreicht um auf Einkaufstour zu gehen? Nichts leichter als das. Der State & Notification Broker nimmt uns hier die mühsame TAPI Abfragen ab und hält uns auf dem Laufenden.
C++
//State & Notification Broker Header Datei #include <snapi.h> //Registry Hilfsfunktionen #include <regext.h> … //Per Registry Helfer Funktion und den State&Notification Broker Konstanten //die aktuelle Empfangsstärke in Prozent auslesen DWORD dwSignal = 0; if(RegistryGetDWORD(SN_PHONESIGNALSTRENGTH_ROOT,SN_PHONESIGNALSTRENGTH_PATH,SN_PHONESIGNALSTRENGTH_VALUE,&dwSignal)==S_OK) printf("Mobilfunksignal: %d%%\n",dwSignal); else printf("Fehler bei RegistryGetDWORD\n");
In C# geht dies mit Hilfe der SNAPI genauso einfach. Nicht vergessen: Auch hier wieder die Verweise zu den Windows Mobile SDK Bibliotheken „Microsoft.WindowsMobile“ und „Microsoft.WindowsMobile.Status“ vorab hinzufügen. Hier nun noch das Snippet:
C#
using Microsoft.WindowsMobile.Status; … Console.WriteLine("Mobilfunksignal: {0}%", SystemState.PhoneSignalStrength); …
Patrick & Peter PS: Wer noch auf der Suche nach einem kleinen Geschenk für sich selbst ist kann ja mal im Windows Marketplace für mobile Geräte vorbeischauen.
Hallo und willkommen zu unserem Windows Mobile Adventskalender 2009. Jeden Tag können sich Windows Mobile Entwickler nun auf ein kleines Codeschnipsel oder einen Tipp rund um Windows Mobile freuen. Los geht es heute mit der Überprüfung ob Ihr Gerät denn auch bis kommende Weihnachten, also dem 24.12.2009 durchhält. Dazu überprüfen wir die Batterie des Gerätes. Die Funktion der Wahl ist GetSystemPowerStatusEx bzw. auch der State & Notification Broker (SNAPI). Zum einmaligen bzw. nicht periodischen Abfragen kann man durchaus die GetSystemPowerStatusEx Funktion verwenden. Möchte man jedoch durchgehend über den Batteriezustand informiert sein ist der State & Notification Broker die bessere Wahl, da man über Änderungen automatisch benachrichtigt werden kann. Doch genug geredet, hier nun die Codeschnipsel:
//Struktur anlegen SYSTEM_POWER_STATUS_EX sysPowerStatus; //Struktur säubern memset(&sysPowerStatus,0,sizeof(SYSTEM_POWER_STATUS_EX)); //Aktuellen Status abfragen und ausgeben if(GetSystemPowerStatusEx(&sysPowerStatus,TRUE)) printf("Batterie %d%%\nLadend: %s\n", sysPowerStatus.BatteryLifePercent, (sysPowerStatus.ACLineStatus != AC_LINE_ONLINE) ? "Nein" : "Ja"); else printf("Fehler bei GetSystemPowerStatusEx\n");
C++
In C# ist es leider nicht ganz so einfach, da hier mit P/Invoke gearbeitet werden muss, wenn man den genauen Ladestand in % erfahren möchte. Zumindest für die Information, ob das Gerät lädt, lässt sich hier die SNAPI verwenden. Bedenken Sie hierbei, dass Sie hierfür die Referenzen zu den Windows Mobile SDK Bibliotheken „Microsoft.WindowsMobile“ und „Microsoft.WindowsMobile.Status“ hinzufügen müssen. Hier nun das verwaltete Snippet:
public class SYSTEM_POWER_STATUS_EX { public byte ACLineStatus; public byte BatteryFlag; public byte BatteryLifePercent; public byte Reserved1; public uint BatteryLifeTime; public uint BatteryFullLifeTime; public byte Reserved2; public byte BackupBatteryFlag; public byte BackupBatteryLifePercent; public byte Reserved3; public uint BackupBatteryLifeTime; public uint BackupBatteryFullLifeTime;
}
class Program { [DllImport("coredll")] private static extern uint GetSystemPowerStatusEx(SYSTEM_POWER_STATUS_EX lpSystemPowerStatus, bool fUpdate);
static void Main(string[] args) { BatteryState batteryState = SystemState.PowerBatteryState; SYSTEM_POWER_STATUS_EX status = new SYSTEM_POWER_STATUS_EX();
if (GetSystemPowerStatusEx(status, false) == 1) {
Console.WriteLine("Batterie {0}%\nLadend: {1}\n", String.Format("{0}%", status.BatteryLifePercent), (batteryState == BatteryState.Charging ? "Ja" : "Nein")); } } }
C# Mehr zu GetSystemPowerStatusEx erhalten Sie hier: http://msdn.microsoft.com/en-us/library/aa453172.aspx Patrick & Peter
Adventskalender, meist mit Schokolade gefüllt, erfreuen sich jedes Jahr aufs Neue sehr großer Beliebtheit. Um jedoch auf die Pfunde zu achten, haben Patrick Getzmann und ich uns entschieden, einen Adventskalender in traditioneller Form für Windows Mobile Entwickler anzubieten und das Jahr somit festlich ausklingen zu lassen. Jeden Tag gibt es somit eine neue “Leckerei” in Form von Code Snippets. Hierbei handelt es sich um kleine Codebeispiele, welche häufiger nachgefragt werden.
Damit auch jeder etwas für sich findet, werden die Snippets einmal nativ in C++ von Patrick angeboten, sowie von meiner Seite verwaltet in C#.
Did you ever wanted to show your skills, how to develop mobile Applications for Windows Mobile? Probably you have been waiting for some additional stimulation to start off? Especially if you have been thinking about deploying your app via Windows Marketplace for Mobile? In that case take a look at this post by Frank Prengel, and probably you will be winning one of the prices! More info on the contest can be found here. 
(Sorry – this time german only)
Werte Leser, geschätzte Kollegen, liebe Freunde, Torsten Weber und ich, möchten auf eine neue Konferenz hinweisen, die speziell an die Softwareentwickler im Mobile Computing Umfeld gerichtet ist. Das kommt nicht von ungefähr. Wir hatten in den letzten Jahren bei den „klassischen“ Konferenzen leicht das Gefühl, dass Vorträge, Workshops etc. pp. im Mobile Computing Bereich zwar „dabei sind“, aber zu kurz kommen, jedenfalls uns. Auf der anderen Seite wünschten wir uns schon sehr lange eine Konferenz, die sich rein auf die Mobile Computing Aspekte konzentriert. Auch wir als langjährige Sprecher möchten Erfahrungsaustausch, Wissen und Neues sowie Inspiratives vermittelt bekommen und nicht immer “nur” vor dem Publikum stehen. Saubere und testbare Architekturen wie per Single Responsibility, Substitution Principle, Dependency Injection, Inversion Of Control, Microkernel kennen wir und dennoch, es ist eben nicht 1:1 vom Desktop/Server auf die mobilen Geräte übertragbar – wie zu oft vereinfachend behauptet wird. Kennen Sie z. B. mindestens drei verwendbare mobile Microkernel? Die Antwort ist einfach, denn schon nur der Druck einer Datei oder die Anzeige eines animierten GIFs in einem benutzerdefinierten Steuerelement kann schnell in eine Sisyphusarbeit ausarten. Dazu kommt, dass existierende Konferenzen im Mobile Computing Bereich nicht auf den deutschen Markt bzw. auf Softwareentwickler ausgerichtet sind sowie meist auch nicht in Deutsch gehalten werden. Windows Mobile 6.5 mit dem Marketplace ist gestartet. Stopp! Das sind zig Gründe in die Hände zu spucken, Communityarbeit zu leisten und einfach eine solche Konferenz selber zu gestalten! – die MobileGuru konferenz, zu der uns die ppedv AG ein Zuhause geschaffen hat. Die Zielgruppe unserer Konferenz sind alle Softwareentwickler, die neu in das Thema Mobile Computing einsteigen oder sich damit hauptsächlich beschäftigen. Die Konferenz leistet damit die Vermittlung aller notwendigen Schritte, Werkzeuge und Informationen vor Stolpersteinen für Anfänger, als auch spezielle Lösungen für stereotypisch konkretisierbare Aufgabenstellungen Fortgeschrittener. Wir bieten Vorträge, Hand-on-Labs und einen Open Space verknüpft mit guten Erfahrungen vom .NET Open Space; nämlich, dass Aufteilungen in Sprecher / Zuhörer nicht immer pro Forma da sein müssen. Die Fakten: 30.11.2009 – 01.12.2009 2 Tage Konferenz, 1 Tag Workshops in Leipzig, am Mediencampus Villa Ida http://www.mobileguru.de/ Content Chair bin ich, General Chair ist Torsten Weber. Um die Organisation kümmert sich Jenny Piesker. Hannes Preishuber hilft per Steering Komitee kräftig mit dem Anschub unserer Idee!
Wir haben heute den Call for Papers mit Einsendeschluss 03.10.2009 verschickt. Als Übersicht zu was wir Vorschläge sammeln, haben wir nachfolgende Stichpunkte aufgeführt. Wir erwarten auch darüberhinaus viele Vorschläge in Richtung Deep Dive, wie z. B. die I2C-Bus Kommunikation mit C#. Auch internationale Gäste haben wir eingeladen. Bewerbungen nehmen wir gerne an! Einsteiger - Der Einstieg in die mobile Entwicklung: Ressourcen und Links für Neueinsteiger
- 3rd Party Tools für das Mobile Development
- Unterschiede zwischen iPhone, Android und Windows Mobile für den Entwickler
- Unterschiede zwischen Windows Mobile Standard und Professional für den Entwickler
- Kommunizieren mit der Außenwelt: WCF, Web Services und HTTP
- Das richtige Gerät für die richtige Anforderung: Consumer vs. Ruggedized Geräte
- Die richtige Plattform für die richtige Anforderung: Win Embedded vs. Windows Mobile
- Unit Testing für mobile Anwendungen
- Der Einstieg in P/Invoke unter Windows Mobile
- Performante Anwendungen konzipieren
- Green IT: Clever Strom sparen, wo möglich
- Optimierte Datenkommunikation – Beyond Web Services und Co.
- Consumer- vs. Businessanwendungen: Welche Unterschiede gibt es
- Windows Marketplace for Mobile
- Arbeiten mit SQL CE 3.1
- Arbeiten mit Sensoren
- Die .NET CF Powertoys im Detail erklärt
- Windows Mobile aus Sicht eines Windows XP / Vista Users
- Gute GUIs selbst entwickeln, Resco Tools etc. einsetzen
Fortgeschritten - Arbeiten mit CPFs
- Neues im WM 6.5 für Entwickler
- Mobile Sicherheit
- Das Web als Anwendungsplattform für mobile Geräte
- Ansprechende Oberflächen selbst gestalten
- Das Sync Framework erklärt
- Eigene Steuerelemente mit dem .NET CF (inkl. Designerunterstützung)
- "Hello World": Kommunikation mit der Außenwelt (GPRS/EDGE, WLAN, Bluetooth)
- Consumer Solution Accelerator – Was bringt es dem Entwickler
- Going Enterprise: Backendsysteme mobilisieren
- Drucken mit mobilen Geräten
- Arbeiten mit db4o
Experte - Kiosk-Mode Anwendungen erstellen
- Betriebssysteme selber zusammenbauen
- Mobile Device Management im Enterprise Umfeld
- Dienste unter Windows Mobile in nativen und verwaltetem Code
- P/Invoke Deep Dive
- Treiberentwicklung, Hardwareprogrammierung bis Speichermanagement
- Continuous Integration: Tools, Prozesse, Konzepte
- Saubere und testbare Architekturen per Single Responsibility, Substitution Principle, Dependency Injection und Inversion Of Control, mobile Microkernel usw.
Wir freuen uns sehr, Sie auf der MobileGuru zu begrüßen! Mit den besten Grüßen! Peter Nowak, Torsten Weber
Simon Hackfort released his managed version of Microsofts FocusApp in preparation of our upcoming WebCast already on CodePlex. The advantages over FocusApp are: - No need for compiling an new version – ManagedFocusApp is configurable
- All existing in managed Code
- Autostart-Feature of Hopper
- …
So check out version 1.0 on CodePlex here. (For those not familiar with FocusApp: FocusApp is a little helper application in combination with Hopper. Hopper itself is a test tool sending random Window Messages, Mouseclicks and keyboard entries for stress testing an application. As part of the Application Submission Requirements for Windows Marketplace for Mobile, the Hopper test has to be successfully ran for 2 hours)
Patrick Getzmann, Simon Hackfort and myself are actually recording a new series on Windows Mobile Development for MSDN. The main topic overall is Windows Mobile 6.5 and additional components available by MS. Part 1 has been made available already yesterday: “Windows Mobile Applications (Teil 1 von 4) - Einführung in die Softwarerichtlinien für den Windows Marketplace for Mobile”. You can find the webcast here. All new webcasts will be shown here.
The next webcast will be available soon and will be covering Hopper and the App Verifier. Stay tuned.
As I’ve been talking in the past already, it is sometimes valuable, to create applications for the .NET CF, which are running unter the .NET Framework as well. This can cause some issues on the .NET Framework, as you don’t have direct access to Environment variables and all enumerations from Environment.SpecialFolder when you probably need them. But you can achieve access to this information through reflection. For environment variables this is easy: public static string ReadEnvironmentVariable(string variableName) { return (string)typeof(Environment).InvokeMember("GetEnvironmentVariable", BindingFlags.Default | BindingFlags.InvokeMethod, null, "", new object[] { variableName }); } The same applies to the SpecialFolder-Enumeration: public static string ReadSpecialFolder(string variableName) { return Environment.GetFolderPath((Environment.SpecialFolder)Enum.Parse(typeof(Environment.SpecialFolder), variableName, true)); } Accessing both types of information is also easy. Please be aware of to do this only on the desktop system, via requesting the platform underneath: if (Environment.OSVersion.Platform == PlatformID.Win32NT) { string tempPath = ReadEnvironmentVariable("TEMP")); string localApplicationDataFolder = ReadSpecialFolder("LocalApplicationData"); }
Maarten Struys, a former DAD MVP, has published a whitepaper on Creating Location Aware Applications for Windows Mobile Devices. This whitepaper doesn’t only cover GPS, but Cell Tower Lookup as well. Cell Tower Lookup is based on GSM, where a position can be retrieved by the according CellID. The pros and cons of each method are covered by the whitepaper as well. A sample application is also included. As the sample application is using the Yahoo web service for retrieving the location based on the CellID, I’d suggest to take a look at Providers like CellDB and OpenCellID. Those providers don’t only enable (after registration) to request CellID locations, but also to upload new ones. If you are especially interested in posting new CellIDs, than you probably shall take a look at the Open Cell Client.
I’ve been quite astonished to find out, that the Dev Toolkit for WM 6.5 doesn’t have any documentation on how to create Widgets for WM 6.5 included. Instead of finding it within the Dev Toolkit, an article can be found under Getting started with widgets on Windows Mobile 6.5 on MSDN. This article is supposed to be a starting point of an article series, as the information provided isn’t fully covered. Topics around the included Widget API are missing. A small remark on the article: If you have already installed the Dev Toolkit instead of the WM 6.5 Emulator package, the description on how to use the emulator isn’t correct. Instead of using this entry: you have to use one of the Windows Mobile 6.5 Emulators, listed under the Windows Mobile 6 Professional / Standard SDK entry.
Yep – it is available now: The Windows Mobile 6.5 Developer Toolkit. Developer Toolkit means that it isn’t a full blown SDK and therefore needs the Windows Mobile 6.0 SDK as a base installed. The Toolkit includes the Windows Mobile 6.5 Emulator and is available in 7 languages (yes, already german!!!!). You can find a brief description on the Toolkit here, or just go ahead and download it from here.
As a few people already realized, the VS 2010 Beta documentation states: “Support for smart device development has been removed from Visual Studio 2010.” Short answer: VS 2010 won’t support WM 6.5 / CE 6.0 and earlier, but will support the following versions. Long answer: Read this official statement from Microsofts Technical Evangelist Frank Prengel.
Ever wanted to write your blog posts from your Windows Mobile device? As there are a lot of mobile twitter apps the applications for mobile blogging are rare. Therefore you shall take a look at Windows Live Writer for Windows Mobile, which I now take as a working name. The name itself states that it is an application from Microsofts Windows Live Team, which ISN’T true. It isn’t associated with Microsoft in ANY way, so expect the application name to change soon.  The application itself, as published on Codeplex here, looks very promising for the moment as it has started a few days ago. The UI isn’t anything extraordinary at the moment: Plain Windows Forms controls. In my eyes this isn’t anything bad as it goes down to the basics and just serves the needs. Looks promising – let’s see what happens in the future with this tool!
Have you ever experienced the problem, that your .NET CF application throws the following exception using a SSL Connection? System.Net.WebException: Unable to read data from the transport connection (System.Net.Sockets.SocketException: Unknown error (0x0)) If this is the case, than you probably want to get the HotFix for Web Services over SSL for .NET CF 3.5. Unfortunatelly this error exists with the .NET CF 2.0, where no fix is available and I’m not commenting this any further. 
MyPhone If you have been interested in testing MyPhone on your Mobile Device, you now have the possibility as the beta has been opened to all users. More Info can be found on the teams blog post. Windows Mobile Marketplace 1.) As a lot of you have been asking, when the registration will be available to NON US citizens: It’s going to be mid july. 2.) The Windows Mobile Marketplace Forum on MSDN has opened it's doors. You can find it here.
New to Windows Mobile Development? Want to speed up fast? In this case you shall have a look at the rampup modules at MSDN. In 7 courses you will learn: - Level 1: Mobile Development Introduction
- Level 2: Device Emulators
- Level 3: Mobile Windows Forms Development
- Level 4: Advanced Mobile Windows Forms Development
- Level 5: SQL Server CE Introduction
- Level 6: Security and Deployment
- Level 7: Mobile Web Development
The rampup modules can be found here. Thanks Maarten for pointing out!
Are you attending TechEd US and interested in the Windows Mobile Track? Than you shall take a look a this post from the Windows Mobile Blog post for a summary. I wish everyone a pleasent time over there. I actually can’t attend the TechEd US but I’m actually looking forward to attend TechEd EMEA, which will take place this year in Berlin from Nov 9th to Nov 13th.
Ever wondered when you will get an optimized Facebook application for Windows Mobile? The time is now. Some key features are: -
Send messages to any of the people in your Friends list. -
Take pictures and videos on your phone, then upload them right to Facebook. -
Send messages or call people in your Friends list. -
Manage your profile and post anytime, anywhere. A more detailed description can be found here. Or download it directly from your mobile browser here. (Source: Microsoft)
Very often I get asked via Mail or Messenger “Can you help me”, “How do I…”, “Can you tell me how…” or similar questions. My general reply is (especially for german based persons) to use the Windows Mobile Forum on MSDN. There is even a localized forum for those who aren’t that familiar with the english language… (Okay, in that case they aren’t able to read that post, but this is another story ). The reason I tell people to use this forum has several reasons: - Probably there is someone out on the Net, who has the same problem. Documenting it that way makes it easy for others to find THAT solution.
- Searching the forum minimizes the questions.
- I don’t know all the answers. On the forums are several other people around, who can answer questions even better than I do.
- You can ask in native german language.
 Even those of you who tried it earlier and haven’t been satisfied with it shall give it another try: The Forums have been reworked at the beginning of this year. This doesn’t only mean a facelift but new functionality as well. If you are interested in a breif german overview I suggest reading Kai’s blogpost on this. As I’m a Moderator on this Forum as well seeing forward to see you there. Link: German Windows Mobile Forum on MSDN
Yes, I know. I’m old school regarding Web 2.0. However – haven’t had the chance to resist Twitter any more instead of using the Facebook Status all the time. So, if you want to follow, you can follow me at: http://twitter.com/PeNoWiMo
Do you want to know, which requirements have to be met for creating Apps for the Windows Mobile Marketplace? Then you should have a look at the Submission Guidelines. This document is actually a 32 pages long Draft in PDF Format. For a quick overview I’d suggest to head over to pocketnow.com and take a look at the short summary, which gives you a quick overview of which requiremnts have to be met.
Did you ever had the opinion, that GDI drawing operations are slower, when working with a rotated screen? Probably you are right. Chris Take from OpenNETCF goes down on this and analyzes it in his blog post. His testing tool has been published as well. Good job, Chris.
Nearly every mobile business application uses a database, whether on client side, or on server side. How you can use a local database, sync with a server database and incorporate in other ways shows this special last edition from the Lost Files series. Again, this document is kept in german. If anyone is willing to translate it into english, feel free to contact me. In contrast to the other Lost Files episodes, this time this document is a full featured chapter. As this german native document has been written at the end of 2006 a few new hot topics are missing, but still it is worth the read. Happy reading. :) Please be aware of, that this article and samples are AS IS. No support, no update is being given.
I get questioned a lot of times, where to find new or different mobile controls from third partys. First of all I’d like to point you to Resco.net. With the MobileForms Toolkit you get new forms, which are enhanced in touch functionality. A list of all included controls including screenshots can be seen here. The toolkit itself is compatible with VS 2008 as well. A smaller set of interesting UI components can be found at http://www.beemobile4.net/. As it looks like this company is just starting, the included elements look promising. Especially the offer of suggesting new elements looks promising. But what do you do, if you want to create your own alphablended or transparent controls? In this case you shall have a look at Alex Yakhnins post to see, how the basics work. If you aren’t interested in creating evereything from scratch, you are probably interested in taking a look at the AlphaMobileControls on CodePlex. These available base elements can be used for developing more compelling controls, if needed. The AlphaMobileControls have been shortly covered in our WebCast Series as well (unfortunatly in german only): Windows Mobile für Profis (Teil 3 von 6) - Wege zu ansprechenden Benutzeroberflächen unter Windows Mobile: Alphablending, gradiente Farbverläufe und Transparenz
You know, that a “Hello World” is always the first starting point on how to develop your first application. Maarten Struys, a Netherlands Device Apllication Development MVP, has assembled some videos in english, to give you a staring point in creating your first mobile application in managed Code. The 20 minutes videos cover as well, which tools are needed to start your mobile development. Just take a look over here, if you are interested. Good job Maarten!
As you are aware of, that you have already a Cellular emulator for your Windows Mobile Emulator, how would you like the idea of emulating Bluetooth as well? In that case you shall have a look at the Bluetooth for Microsoft Device Emulator. It shows how to install and configure the necessary components. This includes the FreeBT Bluetooth stack, which has to be installed on your hosting machine. As FreeBT is still in alpha stage you shall have a look at the troubleshooting section for more information…
Ever wanted to know how you can save memory for your mobile managed applications? In that case you shall read the article MemMamker for the .NET CF by Rob Tiffany. It shows how to optimize applications and how the “trick” works.
As you know, a lot of mobile devices, especially in Germany, don’t have Windows Live for Windows Mobile included. Therefore there has been a free package around, which delivered Live Hotmail, Messenger, Spaces and Contacs to your device. This package has been updated. You can download the CAB-File directly from your mobile browser by clicking this link.
The recording of the Webcast Series on Mobile Development has been finished, yet the last part is about to being published soon. Simon, Patrick and I are actually thinking about setting up a new series. We have actually assembled some ideas for new topics but give you the opportunity to have some influence on this. Share your ideas as comments on this page and we will think about, if we will have the chance to include this topics. Unfortunatelly it is going to be in native (german) again….
One year passed, one to go – I’m glad to announce that I’ve been reawarded this year by Microsoft as “Device Application Development MVP”. Before starting now to thank everyone, who supported me and an article in this blog shouldn't exceed it's boundaries, my first “Thank You” is going to Microsoft, especially the MVP-Leads Katrin Letzel & Matthias Schäfers. In short: Thanks everyone, who supported me to be reawarded.
Microsoft recently updated it’s portals on Windows Mobile and the according Developer Portal in Germany. The general portal has now a mesh on different consumer information like devices, latest news, information on consumer software and diffenent guidelines. Sure that it actually uses Silverlight like a lot of actual updates MS Sites, which is okay for me. The portal can be found here. The Windows Mobile Developer Network looks more like a new starting page to the MSDN Network. Nevertheless it meshes important developer information to be seen directly. Beside of actual news and events useful mobile applications are listed as well as links to different interesting blogs on mobile development as well as on additional “extras”. In this very moment the page looks a bit empty, but I’m sure that this will change very soon.
Chris Tacke shows in his blogpost, how to create a Screen Capture with less than 10 lines of code. The interesting about this is, that it just uses managed code without any P/Invoke and it includes cleaning up code. Can’t be easier. Thanks Chris!
A few weeks ago Samsung unveiled it’s Samsung Windows Mobile SDK 1.0, which you can get here. It allows you to access phone features like Accelerometer (aka G-Sensor), notifications LEDs and haptics feedback. This is, how good device manufactures offer access to their provided functiionality to 3rd parties. Now it is up to HTC to release such an SDK as well ;). An unofficial alternative to this is the Windows Mobile Unified Sensor SDK API on CodePlex., which can be found here. It supports the Samsung Omnia/Instinct as well as the HTC Touch Diamond/Pro.
Thanks everyone attending to Simons and my sessions yesterday @ BASTA! 2009. It was a pleasure for us, even we haven’t expected to have so many people coming by. So, as promised you find here the slides and samples for: - Windows Mobiles sieht und fühlt:
- Mobile Anwendungen 2.0:
The slides are in PDF format and have been kept german.
Windows Mobile itself doesn’t support Printing at all. There are a few solutions out there to enrich Windows Mobile with this functionality. How it can be done directly from your application, or just how to print different document formats is shown in Part 9: Printing with Windows Mobile from the Lost Files series. Again, this article is kept in german. If anyone is willing to translate it into english, feel free to contact me. Happy reading. :) Please be aware of, that this article and samples are AS IS. No support, no update is being given. This is the last part of the Lost Files series. I hope you’ve enjoyed it as much as I’ve enjoyed writing.
The famous slogan for StarCraft II is “It’s about time”. The same slogan accords to Simon, Patrick and myself as well: It’s about time for some Webcasts on Mobility. So lean back and enjoy our forthcoming series on Windows Mobile Development in native and managed code. It’s beyond “button1_Click” and covers topic you are searching for on the Internet beyond “Hello World”. The Webcast series will contain the following 6 topics and release dates: - Windows Mobile für Profis (Teil 1 von 6) - Arbeiten mit der Remote API: Interaktion mit ActiveSync und dem Windows Mobile Device Center
Serien-Webcast | Patrick Getzmann, Peter Nowak | 27.02.2009 In diesem Webcast erfahren Sie, wie Sie auf Ihr mobiles Gerät vom Desktop aus nicht nur zugreifen, sondern wie Sie es auch manipulieren können.
 - Windows Mobile für Profis (Teil 2 von 6) - Arbeiten mit den HTC- und Samsung-Sensoren
Serien-Webcast | Patrick Getzmann, Simon Hackfort, Peter Nowak | 19.03.2009 Neueste Geräte der Firma HTC und Samsung bieten viele neue Sensoren, etwa für Beschleunigung oder Helligkeit. Wie Sie diese verwenden können und welche Vorteile diese Ihnen bieten, zeigt dieser Webcast.
 - Windows Mobile für Profis (Teil 3 von 6) - Wege zu ansprechenden Benutzeroberflächen unter Windows Mobile: Alphablending, gradiente Farbverläufe und Transparenz
Serien-Webcast | Patrick Getzmann, Simon Hackfort, Peter Nowak | 26.03.2009 Graue Oberflächen und graue Buttons waren gestern. Dieser Webcast demonstriert, wie Sie auch unter Windows Mobile einen Hauch von "Wow!" in Sachen Oberflächen versprühen können.  - Windows Mobile für Profis (Teil 4 von 6) - Native und verwaltete Dienste für Windows Mobile: Anwendungen im Hintergrund ausführen
Serien-Webcast | Patrick Getzmann, Peter Nowak | 02.04.2009 Unter Windows Mobile gibt es nicht nur Vordergrund-Anwendungen, die ausgeführt werden können. Wie auf dem Desktop können auch Hintergrund-Dienste erstellt und verwendet werden. Welche Vorteile das bietet und wie dies selbst in verwaltetem Code geht, zeigt dieser Webcast.  - Windows Mobile für Profis (Teil 5 von 6) - Hintergrundaufgaben und periodische Funktionen während des Suspends unter Windows Mobile
Serien-Webcast | Patrick Getzmann | 09.04.2009 Terminerinnerungen oder regelmässige Datenprüfung auf dem Server sind durchaus gängige Bestandteile von LOBs und anderen Anwendungen. Dieser Webcast zeigt, wie solche Funktionen stromsparend implementiert werden können - auch ohne den Benutzer nachts durch ein hell erleuchtetes Display aufzuwecken. - Windows Mobile für Profis (Teil 6 von 6) - Ansteuern der Kamera mittels DirectShow
Serien-Webcast | Patrick Getzmann | 16.04.2009
Die meisten Windows Mobile-Geräte haben eingebaute Foto-/Videokameras.
Wie diese Kameras in die eigene native Applikation eingebaut werden
können, erfahren Sie in diesem Webcast. as you can see from the description already, all Webcasts will be presented in native german. More info on the Webcasts can be found on the official page here.
The dot.net Magazin current issue features another mobile article by Simon and myself. This time we’ve been showing how to work with the new sensors provided by current HTC and Samsung devices in managed code. This topic will be covered as well in one of our sessions on the BASTA! 2009, where more info on this can be found here. 
As already noted here, Simon and I will be presenting 2 mobile sessions @ the german dev conference BASTA! Spring 2009, which takes place from Feb 23rd to 27th 2009 in Darmstadt, Germany. The session List has slightly changed: - Windows Mobile sieht und fühlt (Feb 26th 2009: 1:30 - 2:45 PM)
- Mobile Anwendungen 2.0 (Feb 26th 2009: 4:45 - 6:00 PM) (was Live Mesh Mobile)
Especially Thursday will include a “Mobile Computing” slot. A list on that day can be seen here. If you will attend on the Conference, feel free to stop by and say Hello. You will find my most (as usual) at the designated smoking slots. 
Nearly every mobile application uses a properitary logging mechanism instead of using great Logging Frameworks like log4net. How it can be used is shown in Part 8: Logging with log4net from the Lost Files series. Again, this article is kept in german. If anyone is willing to translate it into english, feel free to contact me. Happy reading. :) Please be aware of, that this article and samples are AS IS. No support, no update is being given.
You don’t always have the chance to test applications using original devices. Especially when working in Buildings you don’t have the chance to work with a GPS device. A short introduction in Part 7: Working with Emulators from the Lost Files shows, how to work with Fake GPS, Fake GPS Helper and the Cellular Emulator. Again, this article is kept in german. If anyone is willing to translate it into english, feel free to contact me. Happy reading. :) Please be aware of, that this article and samples are AS IS. No support, no update is being given.
Desktop applications aren’t being delivered nowadays without being properly tested in most cases by Unit Tests. How this can be achieved using Visual Studio 2008 and NUnitLite to test mobile Applications is described in Part 6: Mobile Unit Testing from the Lost Files. Again, this article is kept in german. If anyone is willing to translate it into english, feel free to contact me. Happy reading. :) Please be aware of, that this article and samples are AS IS. No support, no update is being given.
The Windows Mobile Device Center comes along with some assemblies for the Remote API.Unfortunatelly they aren’t documented and supported officially. But if you are interested to see, how they work, take a look at Part 5: Remote API with the Windows Mobile Device Center from the Lost Files. Again, this article is kept in german. If anyone is willing to translate it into english, feel free to contact me. Happy reading. :) Please be aware of, that this article and samples are AS IS. No support, no update is being given.
Did you know, that reverse engineering your managed code is very simple? How you can do that, and how you can prevent your code of being reverse engineered is the topic of Part 4: Obfuscation from the Lost Files. This time it is more an introduction and a short guide, than a full article, but as a good starting point this will help anyway. Again, this article is kept in german. If anyone is willing to translate it into english, feel free to contact me. Happy reading. :) Please be aware of, that this article and samples are AS IS. No support, no update is being given.
Ever wanted to create plugins for the today screen in managed code? This is possible. Check out Part 3: Items for the Today Screen form the Lost Files Series. Again, this article is kept in german. If anyone is willing to translate it into english, feel free to contact me. Happy reading. :) Please be aware of, that this article and samples are AS IS. No support, no update is being given.
Sometimes it is necessary to keep the User “trapped” in his application. He isn’t supposed to use anything else, than this application. This is seen very often is navigationally systems. How you can achieve this in you managed application and how you can handle keyboard hooks, is shown in Part 2: Kiosk Modus from the Lost Files. Again, this article is kept in german. If anyone is willing to translate it into english, feel free to contact me. Happy reading. :)
Please be aware of, that this article and samples are AS IS. No support, no update is being given.
Back in 2007/2008 Torsten and I were working on a second edition of our book Programmieren mit dem.NET Compact Framework, which was published by MS Press. The book finally has been cancelled. But nevertheless – up to this point a few lines have already been written by myself, which I want to publish here, before they get forgotten. Probably someone can use them somehow.
Unfortunatelly the parts are completly in german. Actually I don’t have the time to translate them into english. If someone is willing to do so, just leave me a comment.
So lets start with Part 1: Dateneingabe mal anders which you can download here. It includes the text in PDF-Format and the Sourcecode itself.
Happy reading.  Please be aware of, that this article is AS IS. No support, no update is being given.
Dateneingabe_mal_anders.zip (268,5 KB)
Have you ever come along the “old” Mobile Architecture Pocket Guide from the patterns & practices Group from MS? This document is a must read for mobile developers AND IT Pros when dealing with mobile architecture. Rob Tiffany announces, that this document has been updated to V1.1 and can be downloaded here on CodePlex. A MUST read if you haven’t done already.
Ever bothered by getting unwanted calls or SMS on your Windows Mobile phone? Firewall them with “Call Firewall + SMS Blocker”, which is available for free here. A description on this app can be found over here.
If you are playing around in the Live Mesh CTP, you can find here a sample, how to create a folder in the Live Mesh Environment. The sample code included there seems to be outdated for the actual version. If you follow the description step by step the result won't show a new folder on your Live Mesh Desktop. The error lies in Step 5. The sample code has to be changed from: <entry xml:base="https://user-ctp.windows.net/V0.1/Mesh/" xmlns="http://www.w3.org/2005/Atom"> <title type="text">Test Folder 1</title> <summary type="text">A test object created using Atom.</summary> <category term="MeshObject" label="LiveMeshFolder" scheme="Mesh/MeshObject" /> <category term="MeshObject" scheme="Mesh/Categories" /> </entry> to: <entry xml:base="https://user-ctp.windows.net/V0.1/Mesh/" xmlns="http://www.w3.org/2005/Atom"> <title type="text">Test Folder 1</title> <summary type="text">A test object created using Atom.</summary> <category term="LiveMeshFolder" label="LiveMeshFolder" scheme="http://user.windows.net/MeshObject" /> <category term="MeshObject" label="MeshObject" scheme="http://user.windows.net/Resource" /> </entry> After that, following the next steps you will see a new folder visible on your Live Mesh Desktop. Hint: The Live Mesh Desktop for the CTP is another than the one available at http://www.mesh.com Use http://developer.mesh-ctp.com/ instead.
One and a half year ago I've already reported here about 2D Barcodes in conjunction with mobile devices. Since then I haven't been following the topic for quite a while, as Windows Live Barcode (later named Windows Live Confucius) vanished from the Net. Now it looks like the project has been brought back as Microsoft Tag (Beta).The tags look different than the old ones. (Source: http://blogs.msdn.com/tag/) You can get the tags after signing up here: http://tag.microsoft.com/ The client for reding those tags is available for Android, Blackberry, PalmOD, Symbian S60 and of course Windows Mobile devices. You can download the client dirctly from here: http://gettag.mobi. Even the team has a blog over here: http://blogs.msdn.com/tag/. Very useful for further background information.
I'm happy to announce that Simon Hackfort and myself will be presenting 2 mobile sessions @ the german dev conference BASTA! Spring 2009, which takes place from Feb 23rd to 27th 2009 in Darmstadt, Germany. The sessions are: - Windows Mobile sieht und fühlt (Feb 26th 2009: 1:30 - 2:45 PM)
- Live Mesh für Windows Mobile (Feb 26th 2009: 4:45 - 6:00 PM)
Simon und I will be there from Feb 24th to 26th. We are already excited about all the interesting talks we will have between the sessions, especially on Mobile topics. Additional information about this event can be found here. 
On November 26th the Smart Device Framework 2.3 by OpenNETCF Consulting has been released. This one is the first for Visual Studio 2008. Beside of a lot of bugfixes this version contains 2 new namespaces. OpenNETCF.Core contains a lot of usefull extension methods, where OpenNETCF.Net.Mail contains an implementation for sending mails directly via SMTP from the device. No configured mail account on the device is necessary for this. There are 3 versions available. Additionally to the well known (free) Community Edition you can buy a Standard Edition as well as a Professional edition. Along with a feature matrix for the different editions you can download / buy the Smart Device Framework 2.3 here.
The Thirsty Developer is a podcasting platform by Dave Bost and Larry Clarkin, which you probably don't know yet. Back at PDC they did a podcast with Microsoft Community Program Manager Constanze Roman, Maarten Struys, another Microsoft Mobile MVPs from the Netherlands, and myself. (from left to right: Myself, Maarten Struys, Constanze Kratel, Larry Clarkin) We've been talking about Mobility, especially on SIlverlight 2 Mobile and Live Mesh regarding mobile devices. You can find the episode here, or download the podcast directly here in MP3 format.
I'm proud to announce that a new version of "Managed Services for Windows Mobile" has been released today. Bugfixes: - The Managed Services Launcher is now completly functional. Services become started (if registered) after a reset.
- The Managed Services Manager doesn't throw an exception, of no Managed Services are registered
You can find the latest release on CodePlex here.
At CTIA this year in April, Windows Mobile announced plans to port IE 6 from the desktop to the device. The port has been completed and this version is now officially called Internet Explorer Mobile 6. Microsoft today announced at Tech Ed Barcelona the availability of the IE Mobile 6 emulators for developers during the “Internet Explorer Mobile 6 Preview: Leveraging web technologies for fun and profit” session The interesting stuff about this is that instead of creating a new separate version of a mobile browser, IEM6 is based on IE6 from Windows XP. This isn’t the actual version as IE8 is on the horizon, but this doesn’t have to be the case. The main features of IEM6 are: · Features the rendering engine from IE6 on the PC · Fixes layout for mobile screens, like f.e. text wrapping · Supporting Adobe Flash Lite 3.1 · Enhanced Script and AJAX support with Jscript 5.7 from IE8! Instead of just having an “updated” mobile browser, which wouldn’t make a lot of sense compared to an Opera Mobile or Skyfire browser, IE6M also supports Touch, Gesture and multiple Zoom Levels and Panning. This brings this browser on a level with the aforementioned mobile browsers. In contrast to other browsers IEM6 enables you to switch between a Mobile and Desktop Mode, which enables you to view the general version of a homepage, or the optimized one for mobile browsers, if supported. Therefore a support for tabbed browsing like Opera Mobile is missing. I hope this feature is on schedule for a future version. The main problem I actually see for this browser is, that an installable version as a CAB-File isn’t actually on the schedule. It is supposed to be delivered through a firmware upgrade from your OEM. Especially in Germany this can become very ugly, as this means you aren’t only relying on the OEM offering firmware upgrade for your device, but your provider as well, as he is the one “ordering” a new version of a particular branded firmware version for his devices. This means, getting IEM6 on your device can become very hard. Probably OEMs will ship the browser with new devices, which would make sense from a marketing perspective. The release for IE6M is scheduled for Q3 2008, which means you shall see devices with IEM6 in the market by the end of calendar year 2008. I’ve had the chance to preview IEM6, using the emulator that was announced today. As it isn’t available yet as a firmware for my present devices I had to check it with a device emulator image. By this performance itself can’t be measured correctly. Opening IEM6 it presents itself at the first glimpse like the previous version:
Opening the Mainmenu presents most of the new features:
Trying youtube.com proves that it is working with IEM6: 
As you see, having zoomed in, the mainmenu offers the possibility to zoom in or out via the main menu. It can be achieved through the touchscreen directly, but for supporting Windows Mobile 6 Standard Devices (Smartphones) without a touchscreen, this feature is available for those devices as well. Testing Expedia.de, which actually failed on my Opera Mobile proved, that IEM6 works correctly here.
The options page hasn’t changed much in this version:
Conclusion IE6M has potential for being a good mobile browser, compared to Opera or Skyfire. The advantage is that the rendering engine of IE6 is used, so that a lot of more pages get displayed correctly whereas other mobile browsers fail. Most websites for the desktop are designed and tested for IE as reflected by the following statistics - http://marketshare.hitslink.com/report.aspx?qprid=0. By porting IE 6 for the desktop to the device, Windows Mobile has effectively expanded the user base for the developers of these websites. IE Mobile 6 also extends the web experiences that end-users are familiar with on the desktop to the device, while giving end-users the flexibility of choosing to view mobile versions of websites if they prefer that. On the other hand Opera is already delivered in ROMs with most of the latest devices making it unlikely that OEMs are going to upgrade ROMs for existing devices. To become successful mobile browser MS HAS TO make a CAB-Installation available for upgrading actual devices. You can download the Emulator Windows Mobile 6.1.4 Emulator Images here.
Did you ever got into the issue, that you needed to change your device name programmatically? Simon Hart shows in this post, how it is done.
As mentioned earlier, there are more Sessions on Windows Mobile next week in Barcelona, than last week @ PDC in L.A. Jason Langridge posted a short summary of available sessions at Tech-Ed Barcelona you can find here.
If you haven't had the chance to take a look at the recorded PDC session on SL2 for Windows Mobile over here, or just interested in the samples, which have been shown, then take a look on Amit's post on the shown samples. You can find the post here.
Constanze Kratel informs us about the new Look and Feel of the WM Dev Senter on MSDN (US): "Just in time for PDC we have made some changes to the Windows Mobile Developer Center on MSDN. We have arranged our content around the different steps that make up Windows Mobile Application Development and have selected a range of content from different media. Here’s what it looks like:
We have also created a new section called “Windows Mobile Buzz,” which provides you with links to our social networking profiles, like our Windows Mobile Facebook group.
You will still find all the familiar items you know from previously, such as Featured Resources, Webcasts, Blogs, and others. It’s not only the Windows Mobile Developer Center that has changed. The Windows Mobile Team blog has a new look and feel too. Check it out:
And last, but not least, check out our new Windows Mobile Developer portal:
As always we are happy to get feedback from you about these changes! ..." You can find the original post here.
As already posted, the PDC announced the Windows Azure Platform, on which the Live Services sits on top. Those Services include Live Mesh as well. As announced @ PDC a Mobile Client for Live Mesh for Windows Mobile is now available - actually for the US and UK. Even, if you are happy to live in these countries it is hard to get a working account though, as the amount of testers is limited. Find more info on this click here.
Arriving at L.A. I have already heard, that there wouldn't be much on Windows Mobile @ PDC. So I've started asking myself, if this would be the right conference to attend to as a Device Application MVP. Looking back from today I have to say: Yes it was - definitly! The Windows Mobile Booth at the Microsoft Pavillion was most of the time pretty crowded. (Not the time the picture has been taken, as it was i hour before the PDC closed) The Windows Mobile Booth was also a meeting point for a lot of interested mobile devs, as well as (Device Application) MVPs. So I have been able to meet Maarten Struys, Ginny Caughey, Torsten Weber, Paul Yao, Dave Glover and many more. Even Lillian Eng, Eric Nelson and Loke Uei Tan have been available @ the booth to answer questions. Especially to that Constanze Roman has had a lot of work to do, besides networking. She did a lot of video interviews with different people (including me) on Windows Mobile. Starguests have been Amit Chopra and Giorgio Sardo, who announced Silverlight 2 Mobile and showed a lot of demos during their session @ PDC. You can see the video on the Microsoft PDC Homepage or directly here on Channel 9. The first demo by Amit showed his Visual Studio for Windows Mobile which indeed has been a Silverlight presentations of Screenshot, but still very amusing. Unfortunatelly this session was only able to show the demos by themselves, which was very impressing, so that taking time to dive in into one or 2 Codesamples would have been nice. In my opionion it should have been a second session where a codedive could have taken place at. But the session was so crowded that even 2!!! overflow rooms have been established. Thanks Amit and Giorgio for this great session! As Amit announced the first CTP on Silverlight 2 Mobile is supposed to be available very early of 2009. Regarding the session, there were no more sessions explicitly on Windows Mobile. One session was cancelled earlier, so this was the only session. But during keynotes and sessions it was shown, that Windows Mobile is still a very important platform. So was Bluehoo announced on Monday, which is part of the new Windows Azure Platform, especially on Windows Mobile. Other sessions on this topic, especially Windows Live Services have shown different demos on how to integrate Windows Mobile here as well. As nothing officially on an API for Windows Mobile regarding Live Services has been said or shown, my personal impression is that there is something in the pipe. How otherwise should have the demos been working on Windows Mobile?  All in all - not very much on Mobility @ PDC, but the little bit was quite impressing. Seeing forward to attend PDC 2009 from Nov 17 - 20th in L.A.. And who knows? Probably that time Windows Mobile will be the lineup for the keynote? *JOKINGLY*. 
Ich wollte mich auf diesem Weg nochmal für alle E-Mails bedanken, die ich von Euch während meiner Abwesenheit erhalten habe. Für diejenigen, die es noch nicht wissen: Ich war leider durch eine kleine OP und die Heilungszeit danach ein wenig von der Bildfläche verschwunden. Nun bin ich aber wieder (halbwegs) genesen, was mich dazu führte letzte Woche die PDC zu besuchen. Dazu mehr im folgenden Post. Leider habe ich noch eine "traurige Mitteilung" machen: Ich habe mich entschlossen diesen Blog nur noch in englischer Sprache fort zu führen, da der Aufwand für beide Sprachen nicht zu unterschätzen ist. Dies ist somit der letzte zweisprachige Post.Wenn ihr dennoch wünscht, dass ich meine Entscheidung nochmals überdenken sollte, schreibt mir einen Kommentar, oder eine E-Mail und ich lasse mich überstimmen. Somit also: Back to work. - Englisch Version - I wanted to say once again "Thank you" for all those E-Mails I got from you during my absence. For those, who haven't heard of: I have been on a small surgery and the healing time caused my absence from the PC. But now I'm (almost) back to duty, which allowed me to be at the PDC last week. More on this in the following post. Additionally I have a "sad" announcement to do: I've chosen to keep the following posts only in english as the ongoing work to keep this blog bilingual isn't to underestimate. This is actually the last bilingual post. If you want to have it going on bilingual, just post your comment or send me a mail and I will reconsider my decision. So to say: Back to work.

Vielen Dank an die zahlreichen Teilnehmer, die Simons und meine Session zum Thema "iTextSharp - PDF mittels .NET" auf der BASTA! 2008 in Mainz besucht haben.
Wie versprochen, hier die Slides und und die Code Samples. Wir wünschen viel Spass damit.  itextsharp - pdf mittels.net.pdf (858,72 KB)itextsharp - pdf mittels .net.zip (1,68 MB)itextsharp - pdf mittels .net.z01 (2,5 MB)itextsharp - pdf mittels .net.z02 (2,5 MB)
- English Version -

Thanks to all attendees, who joined Simons and my session on "iTextSharp - PDF via .NET" at BASTA! 2008 in Mainz.
As promised, you can get the slides (german only) and code samples here. We wish yo a lot of fun with it.  itextsharp - pdf mittels.net.pdf (858,72 KB)itextsharp - pdf mittels .net.zip (1,68 MB)itextsharp - pdf mittels .net.z01 (2,5 MB)itextsharp - pdf mittels .net.z02 (2,5 MB)
Vom 20.11. bis zum 21.11.2008 (Preconference am 19.11.) finden in Berlin der Technical Summit 2008 und die Academic Days (19.11.) statt. Genau wie Torsten bin auch ich als Experte beim Technical Summit mit dabei. Ich freue mich schon darauf einige von Euch dort begrüßen zu dürfen und mal wieder aus dem Büro raus zu kommen. Zur Erinnerung (insbesondere für mich), wo man mich im laufenden zweiten Halbjahr dieses Jahres noch antreffen kann, in chronologischer Reihenfolge: | Datum | Veranstaltung | Ort | Blogpost | Rolle | | 22.09.08 - 26.09.08 | BASTA! | Mainz | hier | Speaker | | 27.10.08 - 30.10.08 | PDC 2008 | Los Angeles (USA) | / | Teilnehmer | | 20.11.08 - 21.11.08 | Technical Summit 2008 | Berlin | (lest ihr gerade) | ATE | - English Version - From Nov. 20th to Nov 21st 2008 (Preconference Nov 19th) the Technical Summit 2008 and the Academic Days (Nov 19th) take place in Berlin. Like Torsten I'll be at the Technical Summit available as ATE. I'm glad to see most of you over there and to get out of my office for a few days again. As a remider(especially for myself), where you can catch me during the ongoing second half of this year in chronological order: | Date | Event | City | Blogpost | Role | | 09/22/08 - 09/26/08 | BASTA! | Mainz | here | Speaker | | 10/27/08 - 10/30/08 | PDC 2008 | Los Angeles (USA) | / | Attendant | | 11/20/08 - 11/21/08 | Technical Summit 2008 | Berlin | (actually reading) | ATE |
Ab heute findet eine neue englische Chatreihe statt, welche sich generell um das Thema der Entwicklung mobiler Anwendungen befasst. Den Anfang heute, am 12. August um 18 Uhr deutscher Zeit macht: Windows Mobile App Dev Chat: Top 10 Developer FAQ Do you have questions regarding Windows Mobile application development that you need answers to? Spend an hour with Microsoft employees and MVPs who are experts in Windows Mobile application development. Please join us for a live chat and bring on the questions! This chat will cover the tools and technologies used to develop applications using the Windows Mobile operating system. This month we will also go through the top 10 FAQ Weitere Termine und Themen sind: - Aug 12 - Topic: Top 10 FAQ
- Sept 16 - Topic: TBD
- Oct 14 - Topic: TBD
- Nov 11 - Topic: TBD
- Dec 16 - Topic: TBD
- Jan 13 - Topic: TBD
- Feb 10 - Topic: TBD
- Mar 17 - Topic: TBD
- April 14 - Topic: TBD
- May 12 - Topic: TBD
- June 16 - Topic: TBD
Die offizielle Seite finden Sie hier. Wenn Sie gerne ein Thema vorgeschlagen haben möchten, lassen Sie es mich wissen. - English Version - Today a new chat series starts on Windows Mobile Application Development. It begins today, August 12th at 9 AM PST: Windows Mobile App Dev Chat: Top 10 Developer FAQ Do you have questions regarding Windows Mobile application development that you need answers to? Spend an hour with Microsoft employees and MVPs who are experts in Windows Mobile application development. Please join us for a live chat and bring on the questions! This chat will cover the tools and technologies used to develop applications using the Windows Mobile operating system. This month we will also go through the top 10 FAQ Further Appointments and topics are: - Aug 12 - Topic: Top 10 FAQ
- Sept 16 - Topic: TBD
- Oct 14 - Topic: TBD
- Nov 11 - Topic: TBD
- Dec 16 - Topic: TBD
- Jan 13 - Topic: TBD
- Feb 10 - Topic: TBD
- Mar 17 - Topic: TBD
- April 14 - Topic: TBD
- May 12 - Topic: TBD
- June 16 - Topic: TBD
Check out the official page here. If you have anything that you would like to see let me know.
Patrick wies mich gerade darauf hin, dass mein letzter Post zu diesem Thema auf eine ältere Version des SDKs verwies. Die neue Version, welche hier erhältlich ist, neben der Unterstützung des Nav sensors ebenfalls das HTC Light Sensor SDK enthält. Letzteres ermöglicht die Abfrage des Umgebungslichts in Lumen. Danke Patrick, selbst, wenn du beim Thema "Managed Code" innere Qualen erleiden musst.  - English Version - Patrick told me actually, that my last post on this topic relied on an old version of the SDK. The new Version, which is available here, has beside of the support for the Nav sensors as well the HTC Light Sensor SDK included, which enables requesting the ambient light in lumens. Thanks Patrick, even if the topic "Managed Code" causes inner pain for you. 
Vom 17.10. bis zum 19.10.2008 finden in Leipzig die .NET Open Space 2008 statt, wie Torsten hier ankündigt. Dabei handelt es sich um keine klassische Entwicklerkonferenz, sondern das Konzept sieht anders aus. Auf designiere Sprecher und eine feste Agenda wird verzichtet. Man vereinbart vor Ort, worüber man sprechen mag und diskutiert über das Thema dann in einem so genannten Open Space. Alle sind demzufolge gleich und agieren einfach als Teilnehmer und bringen Informationen ein, wenn möglich - Ein sehr interessantes Konzept, wie ich finde. Die Veranstaltung selbst ist kostenlos, jedoch sind die Plätze selbst limitiert. Ich selbst werde wahrscheinlich leider aus zeitlichen Gründen nicht dabei sein können. Allen Teilnehmer wünsche ich auf jeden Fall viel Spaß. Anmeldung und weitere Informationen zur Veranstaltung gibt es hier. - English Version - From Oct. 17th to Oct 19th the .NET Open Space 2008 takes place in Leipzig, as Torsten announces here. But this isn't a typical developers conference, but the concept behind is different. There are no designated speakers and a predefinied agenda doesn't exist. It is agreed at the conference where and what to talk and probably discuss about which then takes place in a so called Open Space. All persons are therefore equal and act out as participants, which contribute their information if possible - I think a very interesting concept. The conference itself is free, but the available places are limited. I by myself think that I can't participate out of timing issues. I wish all participants definitly a lot of fun. Registration and futher information on the conference are available here.
Eines der verwirrensten Konstrukte sind Netzwerke und Verbindungen als solche unter Windows Mobile. Simon Hart beschriebt hier in seinem ersten Teil, wie man diesem Thema mittels Configuration Service Providern Herr wird. - English Version - One of the most confusing points are networks and connections as themselves under Windows Mobile. Simon Hart describes here in his first part, how to deal with this topic using Configuration Service Provider.
Zugegeben - das HTC Diamond / MDA Compact IV ist schon ein nettes Gerät. Die neue eigens entwickelte Bedienoberfläche sieht schon klasse aus. Doch interessanter als diese finde ich persönlich den implementierten Bewegungssensor. Dieser wird u.a. vom Fotoalbum, dem Opera Browser verwendet und dient zum automatischen Drehen des Displays. Das Spiel Teeter selbst wurde eigens hierfür entwickelt, womit durch Gewichtsverlagerung eine virtuelle Kugel durch ein Labyrinth bewegt werden muss. (Teeter, Quelle: http://www.worldofppc.com/HWTests/diamond.htm) Mittlerweile gibt es auch einige Spassanwendungen, wie das "Diamond Beer" (http://wmpoweruser.com/?p=581) oder das virtuelle Lichtschwert "HTC Light Saber" (http://www.freewarepocketpc.net/ppc-download-htc-light-saber-v1-0.html), oder sogar die virtuelle Wasserwaage "Kai's Wasserwage.Net"(http://pocketland.de/42544/Kai_s_Wasserwaage_fuer_HTC_Touch_Diamond.html), welche dieses Sensor ebenfalls verwenden. (Diamond Beer, Quelle: http://wmpoweruser.com/wp-content/uploads/2008/08/diamondbeer.jpg) (HTC Light Saber, Quelle: http://www.freewarepocketpc.net/img2/pocket-pc-light-saber.jpg) (Kai's Wasserwaage.Net, Quelle: http://pocketland.de/images/screenshots/screenshot.42544.gif) Viele weitere Applikationen finden sich beispielsweise hier. Das interessante daran ist jedoch, dass viele dieser Anwendungen ein installiertes .NET Compact Framework benötigen. Somit muss sich wohl der Sensor auch von verwaltetem Code ausführen lassen... Koushik Dutta gibt in seinem Post Informationen, wie der Sensor Daten bereitstellt und bietet einen Managed Wrapper zusätzlich als Download an. Das nenne ich doch mal innovativ! - English Version - Indeed - the HTC Diamond / MDA Compact IV is a cool device. The especially developed UI is awesome. But more interesting than that is the builtin Accelerometer. This one is used by the included photo application, the Opera Browser and helps to rotate the screen automatically. The included game Teeter was developed especially for this, where you you can navigate a virtual ball through a labyrinth via acceleration. (Teeter, Source: http://www.worldofppc.com/HWTests/diamond.htm) Meanwhile there are a few fun applications available which make use of the accelerometer, like "Diamond Beer" (http://wmpoweruser.com/?p=581) or the virtual Light Saber "HTC Light Saber" (http://www.freewarepocketpc.net/ppc-download-htc-light-saber-v1-0.html), or even a virtual level "Kai's Wasserwage.Net"(http://pocketland.de/42544/Kai_s_Wasserwaage_fuer_HTC_Touch_Diamond.html). (Diamond Beer, Source: http://wmpoweruser.com/wp-content/uploads/2008/08/diamondbeer.jpg) (HTC Light Saber, Source: http://www.freewarepocketpc.net/img2/pocket-pc-light-saber.jpg) (Kai's Wasserwaage.Net, Source: http://pocketland.de/images/screenshots/screenshot.42544.gif) A few more interesting applications can be found here for example. Even more interesting than that is the fact, that a lot of these applications need a preinstalled .NET Compact Framework. This means, that there has to be a possibility to use the sensor from managed code... Koushik Dutta gives in his post information, how the sensor delvers data and offers additionally a managed Wrapper as a download. This is, what I call innovation!
Wie Constanze berichtet, wird es ab August eine neue englische Webcastserie zur Entwicklung von Windows Mobile Anwendungen geben: New Windows Mobile Application Development chat series coming up in August Mark your calendars. Starting on August 12th, 2008 we are launching a new chat series that focuses exclusively on Windows Mobile Application Development. This chat will cover the tools and technologies used to develop applications using the Windows Mobile operating system. MVPs and members of the Windows Mobile product team will be joining this chat to answer your questions. For the August chat, we will also go through the top 10 FAQ on Windows Mobile. The chat will take place on August 12, at 9 AM PST. To register for it, please click on this link: http://www.microsoft.com/communities/chats/vcs/08_0812_msdn_MOBILE.ics. Stay tuned on any upcoming chats! - English Version - Constanze reports, that in august a new webcast series is starting on Windows Mobile Application Development: New Windows Mobile Application Development chat series coming up in August Mark your calendars. Starting on August 12th, 2008 we are launching a new chat series that focuses exclusively on Windows Mobile Application Development. This chat will cover the tools and technologies used to develop applications using the Windows Mobile operating system. MVPs and members of the Windows Mobile product team will be joining this chat to answer your questions. For the August chat, we will also go through the top 10 FAQ on Windows Mobile. The chat will take place on August 12, at 9 AM PST. To register for it, please click on this link: http://www.microsoft.com/communities/chats/vcs/08_0812_msdn_MOBILE.ics. Stay tuned on any upcoming chats!
Letzten Freitag wurde von OpenNETCF CAB Installer SDK veröffentlicht. Der Name selbst ist dabei leider nicht selbstbeschreibend. So handelt es sich bei dem SDK quasi um eine eigene Implementation von wceload in verwaltetem Code. wceload ist verantwortlich für die Installation von CAB-Dateien auf dem mobilen Endgerät. Das OpenNETCF Projekt versteht das CAB-Dateiformat und ermöglicht das anpassen des Installers nach seinen eigenen Wünschen. Interessant wird das jedoch erst, wenn man einen eigenen Installer auf dieser Basis implementiert, der anstatt nativer Setup.DLLs eigene managed Setup.DLLs verarbeitet. Das ist möglich. Mal sehen, ob ich demnächst die Zeit dazu finde etwas derartiges zu Realisieren. Leider ist das Produkt selbst nicht kostenfrei, aber dafür alles andere als teuer. Ich habe es mir auf jeden Fall schon mal gekauft. Weitere Informationen zum OpenNETCF CAB Installer SDK finden Sie hier. - English Version - Last friday the OpenNETCF CAB Installer SDK has been published. The name is unfortunatelly not self describing. This SDK is a "cloned" version of wceload in managed code. wceload is responsible for installing CAB files on a mobile device. The OpenNETCF Project understands the CAB fileformat and enables you to change the installers behaviour to your needs. It get's really intersting, if you think of creating an installer, which processes own created managed Setup.DLLs instead of native Setup.DLLs. This is now possible. Let's see if I find the time to create a sample for this. The product itself isn't free, but therefore anything else than expensive. This is why I bought a copy. More info on the OpenNETCF CAB Installer SDK can be found here.
Jason Langridge weißt daraufhin, dass eine Broschüre veröffentlicht wurde, welche herausstellt, wieso Windows Mobile eine grossartige Plattform für den Einsatz in Organisationen ist. Die Broschüre im PDF Format kann hier heruntergeladen werden. - English Version - Jason Langridge points out, that an executive guide on Windows Mobile for Technical Decision Makers has been released. It outlines, why Windows Mobile is a great platform for Organisations to deploy. The Executive Guide is available in PDF format here.
Alex Feinman wies mich gestern darauf hin, dass es anscheinend beim Erstellen von CAB Dateien mit lokalisierten Ressourcen unter Visual Studio 2008 zu einem Fehler kommt. Dies konnte ich selbst nachstellen. Eine Variante zur Reproduktion: 1. Erstellen einer Geräteanwendung als C# oder VB.NET project 2. Hinzufügen einer neuen Ressource "Resource.en-US.resx" 3. Hinzufügen einer neuen Ressource "Resource.zh-TW.resx" 4. Hinzufügen einiger Strings zu den Ressource-Dateien 5. Erstellen des Projektes. Beachten Sie dabei, dass die entspr. erstellten Ressource-Dateien in den Unterordnern en-US and zh-TW abgelegt werden- 6. Hinzufügen eines CAB-Projektes für intelligente Geräte zur Projektmappe. 7. Hinzufügen der Projektausgabe/Primäre Ausgabe 8. Hinzufügen der Projektausgabe/Lokalisierte Ressourcen 9. Erstellen der CAB Datei. Installieren auf einem mobilen Gerät, wonach die installierten Resource-DLLs vom Zielverzeichnis des Gerätes auf die Desktop Machine kopiert werden. 10. Analysieren der DLLs mit ILDASM auf die MANIFEST/.locale. Alternativ: Reflector
Ergebnis:
Beide Ressource-DLLs sind identisch. Im konkreten Fall sind beide Dateien die der Sprache zh-TW.
Durch weitere Recherche stellte sich heraus, dass es sich hierbei um einen bereits bekannten Bug im CAB Wizard handelt. Somit geschieht dieser Fehler bei der manuellen Erstellung einer CAB Datei, als auch im Visual Studio.
Ilya Tumanov beschreibt hier hierzu einen Workaround:
...
Here's a workaround:
1. In main project which produces resource files run a post build procedure which would create copies of these files with unique name.
For example, "fr\CONVENO Sales.resources.dll" would be copied to fr\fr_CONVENO Sales.resources.dll
2. In your CAB project add files with unique names instead of originals.
3. Select these files one by one, choose "Rename" in context menu and type original name.
Here's sample INF. Note files are unique now, but original names would be restored on device.
Also note I've added files to "Application folder" so %InstallDir% macro is actually used.
This macro can be redirected to storage card upon installation.
[Version] Signature="$Windows NT$" Provider="Microsoft" CESignature="$Windows CE$"
[CEStrings] AppName="PPC_CAB_1" InstallDir=%CE1%\%AppName%
[Strings] Manufacturer="Microsoft"
[CEDevice] VersionMin=4.0 VersionMax=5.99 BuildMax=0xE0000000
[DefaultInstall] CEShortcuts=Shortcuts AddReg=RegKeys CopyFiles=Files.Common1,Files.Common2,Files.Common3
[SourceDisksNames] 1=,"Common1",,"C:\Projects\LVTest\LVTest\bin\Debug\Fr\" 2=,"Common2",,"C:\Projects\LVTest\LVTest\bin\Debug\" 3=,"Common3",,"C:\Projects\LVTest\LVTest\bin\Debug\Gr\"
[SourceDisksFiles] "fr_test.txt"=1 "LVTest.exe"=2 "gr_test.txt"=3
[DestinationDirs] Shortcuts=0,%CE2%\Start Menu Files.Common1=0,"%InstallDir%\Fr" Files.Common2=0,"%InstallDir%" Files.Common3=0,"%InstallDir%\Gr"
[Files.Common1] "test.txt","fr_test.txt",,0
[Files.Common2] "LVTest.exe","LVTest.exe",,0
[Files.Common3] "test.txt","gr_test.txt",,0
[Shortcuts]
[RegKeys]
-- Best regards,
Ilya
This posting is provided "AS IS" with no warranties, and confers no rights.
...
Andere Alternative: WinCE CAB Manager von ocpSoftware.
Angeblich ist dieser Bug schon länger bekannt, doch ein Fix ist seitens MS nicht in Sicht.
Danke Alex und Ilya, für die Information.
- English Version -
Alex Feinman informend me, that on creating CAB files including localized ressources under Visual Studio 2008 it can come to an error. I've been able to reproduce this behaviour.
One way of Reproduction: 1. Create a Form-based SmartDevice C# or VB.NET project 2. Add a new resource called Resource.en-US.resx 3. Add a new resource called Resource.zh-TW.resx 4. Add some strings to the resource files 5. Build the project. Observe that the resource DLLs are correctly generated and placed into subdirectories en-US and zh-TW 6. Add a SmartCab deployment project to the solution. 7. Add Project Output/Primary Output 8. Add project Output/Localized Resource Assemblies 9. Build the cab file. Install it on the device and copy the resource DLLs from the device install directory to the desktop machine. 10. Examine the DLLs with ILDASM tool checking MANIFEST/.locale. Or use Reflector.
Result:
Both resource DLLs are identical. In this case both are from the language zh-TW.
Trough further investigation it turned out, that this is a well known bug within the CAB Wizard. Therefore this bug affect manual building CAB files as well as building them from inside Visual Studio.
Ilya Tumanov describes here a Workaround:
...
Here's a workaround:
1. In main project which produces resource files run a post build procedure which would create copies of these files with unique name.
For example, "fr\CONVENO Sales.resources.dll" would be copied to fr\fr_CONVENO Sales.resources.dll
2. In your CAB project add files with unique names instead of originals.
3. Select these files one by one, choose "Rename" in context menu and type original name.
Here's sample INF. Note files are unique now, but original names would be restored on device.
Also note I've added files to "Application folder" so %InstallDir% macro is actually used.
This macro can be redirected to storage card upon installation.
[Version] Signature="$Windows NT$" Provider="Microsoft" CESignature="$Windows CE$"
[CEStrings] AppName="PPC_CAB_1" InstallDir=%CE1%\%AppName%
[Strings] Manufacturer="Microsoft"
[CEDevice] VersionMin=4.0 VersionMax=5.99 BuildMax=0xE0000000
[DefaultInstall] CEShortcuts=Shortcuts AddReg=RegKeys CopyFiles=Files.Common1,Files.Common2,Files.Common3
[SourceDisksNames] 1=,"Common1",,"C:\Projects\LVTest\LVTest\bin\Debug\Fr\" 2=,"Common2",,"C:\Projects\LVTest\LVTest\bin\Debug\" 3=,"Common3",,"C:\Projects\LVTest\LVTest\bin\Debug\Gr\"
[SourceDisksFiles] "fr_test.txt"=1 "LVTest.exe"=2 "gr_test.txt"=3
[DestinationDirs] Shortcuts=0,%CE2%\Start Menu Files.Common1=0,"%InstallDir%\Fr" Files.Common2=0,"%InstallDir%" Files.Common3=0,"%InstallDir%\Gr"
[Files.Common1] "test.txt","fr_test.txt",,0
[Files.Common2] "LVTest.exe","LVTest.exe",,0
[Files.Common3] "test.txt","gr_test.txt",,0
[Shortcuts]
[RegKeys]
-- Best regards,
Ilya
This posting is provided "AS IS" with no warranties, and confers no rights.
...
Alternative: WinCE CAB Manager von ocpSoftware.
This bug is said to be known for a longer period of time but no fix from MS it to be seen on this.
Thanks Alex and Ilya for this information.
Der RSS Feed dieser Seite kann nun auch über . Bitte verwenden Sie diese URL ab jetzt nach Möglichkeit bitte primär.
- English Version -
The RSS Feed of this site has been changed to . Please use this URL primarily, if possible.
Torsten und ich haben bei XING eine Gruppe zum Thema Mobile Development gegründet. In der Gruppe werden wir u. a. Termine redaktionell betreut aufnehmen. Es ist dabei egal, ob diese zum .NET Compact Framework, Android oder z. B. Palm sind oder nicht, solange sie unter dem Begriff Softwareentwicklung verstanden werden können. Wer bei XING ist und sich bei Mobile Computing besonders für den Bereich Softwareentwicklung interessiert, verpasst so wahrscheinlich keinen möglichen Termin mehr.
Die Gruppe kann hier aufgerufen werden: http://www.xing.com/net/mobiledevelopment.
Die Roadmap:

Die Beschreibung: Die Mobile Development-Gruppe bei XING ist ein unabhängiger Zusammenschluss von Hobby- und professionellen Entwicklern, Projektleitern und Beratern, die sich für Themengebiete rund um die Softwareentwicklung für mobile Geräte interessieren. Dazu gehören nicht nur das .NET Compact Framework oder Windows Mobile, sondern alle gängigen Plattformen wie zum Beispiel Android, Palm oder Windows CE. Ziel dieser Gruppe ist das Networking untereinander und der Wissensaustausch. Ein Beispiel ist die Aggregation von Terminen an dieser Stelle; ein anderes Beispiel die Organisation eines Mobile Bar Camps. Die Gruppe ist dabei ausdrücklich auf die Softwareentwicklung beschränkt, die unter anderem auch Web 2.0 einschließt. Die Etablierung von Geschäftsmodellen, Marketing, Support usw. im Bereich Mobile Computing gehört abgrenzend nicht dazu.

- English Version -
Torsten and I have set up a new group on Mobile Development on XING. In this group we will add f.e. editorially checked appointments. In this group it doesn't matter if the topics regard the.NET Compact Framework, Android or f.e. Palm as long as they relate to the term software development. Whoever is already on XING and is interested especially development regarding, won't probably miss any upcoming event or appointment.
The group can be foun here: http://www.xing.com/net/mobiledevelopment.
The Roadmap:

The description: The Mobile Development-Gruppe on XING is an independent consolidation of hobby and professional developers, project managers and consultants, who are interested into topics around development for mobile devices. It is not all about the .NET Compact Framework and Windows Mobile, but as well about other common platforms like Android, Palm or Windows CE. The objective of this group is networking and exchange in knowledge. A sample for this is the aggregation of Appointments at this place; anothe sample is the organization of a Mobile Bar Campus. This group is explicitly limited on software development, which includes Web 2.0 as well. The establishment of success models, marketing, support etc. regarding Mobile Computing are explicitly not enclosed.

(Note to myself: Translate german graphics to english as soon as possible. Probably Torsten can help here out. UPDATE: Thanks Torsten for the first part. Now the next graphic please )
Als günstige Alternative zur Positionsbestimmung lässt sich anstatt
GPS die Position auch mittels Triangulation der Mobilfunkmasten
bestimmen. Hierfür benötigt man u.a. die CellID - also die eindeutige
Kennung des Mubilfunkmastes.
Dale Lane zeigt in seinem Blog,
wie sich man diese Information programmatisch aus seiner verwalteten
Anwendung via P/Invoke abfragen kann. Hierzu verwendet er als
Schnittstelle den Radio Interface Layer (RIL). Offiziell wird die RIL
jedoch nicht von Windows Mobile unterstützt, weswegen man mit der API
vorsichtig umgehen sollte.
- English Version -
As a cheap alternative for retrieving your position, you can use
instead of GPS a triangulation of your cell towers. Therefore you need
the CellID - a unique identifier of the cell tower.
Dale Lane shows in his blog,
how to request this info programatically from your managed application
via P/Invoke. Therefore he uses the interface to the Radio Interface
Layer (RIL). Officially RIL isn't supported by Windows Mobile, so you
should be very carefull working with this API.
Nach langer Abstinenz freue ich mich Ihnen mitteilen zu können, dass ich dieses Jahr wieder an der BASTA! teilnehmen werde, jedoch leider ohne einen Vortrag zum Thema Mobility. Zusammen mit meinem guten Freund und Kollegen Simon Hackfort halten wir stattdessen ein nicht minder spannenden Vortrag zum Thema: iTextSharp - PDF Generierung mittels .NET Wer ein wenig über diesen Titel nachdenkt, wird auch hier einen Nutzen im Mobility Bereich feststellen.  Wann: 23.September 2008 um 15:15 Uhr Abstract: Finalisierte Dokumente lassen sich nach wie vor am Einfachsten im PDF Format zur Verfügung stellen. Wie dies mit Hilfe der freien iTextSharp-Bibliothek realisiert werden kann, und welche Funktionen Ihnen hierzu zur Verfügung stehen, erfahren Sie in dieser Session. Vor Ort werden Simon und ich vom 23.09. bis 25.09. sein. Wir freuen uns jetzt schon auf interessante Gespräche zwischen den Sessions, insbesondere sehr gerne über den Bereich Mobility. Da gerade Mobility mein Hauptthema ist, verweise ich Sie gerne auf den .NET Mobile Day, welcher Teil der BASTA! sein wird. Nähere Informationen hierzu erhalten Sie hier von Torsten selbst. Die BASTA! 2008 selbst findet vom 22. - 26. September in der Rheingoldhalle in Mainz statt. Alle weiteren Informationen zur Veranstaltung finden Sie hier. - English Version - For a few years I haven't made it to the BASTA! Conference. This year I'm glad to announce that I'm part of it again, unfortunatly without a session on Mobility. My good friend and colleague Simon Hackfort will present a session, which won't be less interesting: iTextSharp - Generating PDF documents via .NET Whoever thinks a second about that topic will discover probably a relation to Mobility as well.  When: September 23rd 2008 at 3:15 PM Simon und I will be there from September 23rd to 25th. We are already excited about all the interesting talks we will have between the sessions, especially on Mobile topics. As Mobility is my main topic I'd like to refer to the .NET Mobile Day, which will be part of the BASTA!. Further information on this can be found from Torsten here . BASTA! 2008 will take place from September 22nd to 26th in the "Rheingoldhalle" in Mainz. Additional information about ths event can be found here.
Es gibt etwas, was mich schon lange nervt. Mindestens 2 mal täglich höre ich Fragen, wie "Warum hat Microsoft das nicht direkt eingebaut" hinsichtlich vorhandenen Funktionalität im .NET Compact Framework oder dem Windows Mobile SDK für verwalteten Code. Das eine oder andere Mal kann ich der Frage zustimmen, aber generell nervt diese Frage nur noch.
Andererseits - Ich stellte mir diese Frage bereits selbst einige Male in der Vergangenheit. Doch ich bekam einige Antworten hierzu, die ich gerne mit diesem Post mit Ihnen teilen möchte. Ich hoffe, dass die Frage somit eher zu einer rhetorischen Frage verkommt. Versuchen wir also hier die Antworten zu finden und schauen ein kleinen wenig hinter die Kulissen.
Jede neue Version, sei es nun vom Compact Framework oder dem Windows Mobile SDK hat natürlich ein kleineres Budget, verglichen mit Windows oder Office.
Dabei sollte man bedenke, dass das Budget nicht nur die Entwicklung neuer Funktionalität bedeutet, sondern auch das Fixen von Bugs, da Sie ja selbst wissen, dass keine Software frei von Bugs sein kann. Die führt natürlich auch dazu, dass manche neuen Funktionen oder vielleicht geringere Bugs auch auf andere Versionen verschoben werden müssen, da einige Bugs oder Funktionen höher priorisiert sind, als andere. Dabei geschieht die Priorisierung seitens "des Kunden". Je öfter Anfragen zu einem Bug oder einer Funktion gestellt werden, umso höher ist auch die Priorität für die folgende Version.
Weiterhin ist eine neue Version des Compact Frameworks oder des Windows Mobile SDKs nicht anderes als jedes Projekt, welches Sie selbst realisieren. Sie haben einen Zeitplan mit einem definierten Release Datum, welches es gilt einzuhalten. Die führt oftmals auch zu einer Kürzung der Liste neuer Funktionen.
Windows Mobile basiert ja, wie Sie wissen, auf Windows Embedded CE. Dies bedeutet im Umkehrschluss, dass (oftmals) Funktionalität nicht unterstützt werden kann, wenn Si e nicht bereits in der Basis enthalten ist. Dies führt zu einer Abhängigkeit im Projekt, welche ebenfalls beachtet werden muss.
Aber es gibt eine weitere Abhängigkeit: Was bringt Ihnen die neueste Funktionalität, wenn Sie nicht von zugehörigen Tools, wie dem Visual Studio oder Windows Mobile beispielsweise selbst unterstützt wird?
Selbst Produkte, welche man eher nicht vermuten würde (Office, Windows) haben selbst, wenn auch einen kleinen Einfluss auf die Planung.
Wenn Sie dies alles einmal zusammengefasst betrachten, dann erkennen Sie, dass eine derartige Planung bereits sehr komplex wird.
Hinzu kommen aber noch andere Gesichtspunkt. Wussten Sie beispielsweise, dass es auch eine festgelegte Beschränkung hinsichtlich einer neuen Version des Compact Fameworks oder des Windows Mobile SDKs gibt, welche nicht überschritten werden darf? Auch das kann dazu führen, dass beriets vorhanden Funktionalität einer Betaversion wieder in der finalen Version entfernt wird. Der Grund hierfür liegt darin, dass das Framework entsprechend auch im ROM des Betriebssystems abgelegt werden soll/muss, wo Speicher eher rar gesät ist.
So kann es aber auch passieren, dass erst während der Entwicklung erkannt wird, dass eine neue Funktionalität das System beispielsweise verlangsamt und somit möglicherweise ein höherer nicht kalkulierter Entwicklungs- oder Testaufwand nötig ist (gerade bei der Portierung von vorhandener .NET Framework Funktionalität).
Nehmen Sie nun einmal alles zusammen und Sie erkennen, dass dieser Job nicht wirklich einfach ist.
Jetzt, wo Sie wissen, was u.a. alles beachtet werden muss (und ich wette, dass meine Aufzählung längst nicht vollständig ist, da ich selbst keinen vollen Einblick erhalte), stellt mir sich die Frage, ob Sie die eingangs gestellte Frage immer noch so oft werden wollen.
Als kleine Anmerkung meinerseits: Es gibt sehr viele Personen, die versuchen ihr Bestes die gewünschte Funktionalität aus eigenem Antrieb in ihrer Freizeit (meist ohne einen finanziellen Hintergrund) zur Verfügung zu stellen. Aus diesem Grunde erwähne ich an dieser Stelle herzlichst gerne noch einmal das Smart Device Framework von OpenNETCF, welches hierfür ein sehr gutes Beispiel ist.
Ich hoffe, dass ich Ihnen hiermit eine befriedigende Antwort geben konnte. Vielleicht konnte ich Sie sogar dazu motivieren ihr eigenes Projekt zu beginnen, um fehlende Funktionalität zu entwickeln und diese auf CodePlex oder woanders zur Verfügung zu stellen?
P.S.: Dieser Post sollte neutral gemeint sein. Es soll weder pro noch contra Microsoft, deren Produktgruppen oder sonst noch in diesen Prozess involvierten Personen sein. Nehmen Sie diese Informationen bitte so hin, wie Sie dort stehen.
Sollten Sie an einer weiteren Sichtweise interessiert sein, so empfehle ich Ihnen diesen post vom Windows Mobile Team.
- English Version -
It is playing on my nerves. At least I hear twice a day the question “Why didn’t Microsoft include it directly”, talking about unsupported functionality in the Compact Framework and Windows Mobile SDK for managed Code. Sometimes I have to agree, but most of the time this question becomes really annoying.
On the other hand – I’ve asked myself this question several times in the past, but finally could get some answers, which I want to share with this post. I hope this turns the question more into a rhetoric question. Let’s try to find some answers and take a small look behind the scenes.
Each new version, whether for the Compact Framework or the Windows Mobile SDK has naturally a smaller funding compared to Windows or Office.
You have to keep in mind, that the funding doesn't cover only new features, but as well bugfixing, as you know that no software is free of bugs. This leads to the point that some functionality or bugs have to be postponed on the list for a later version, as some bugs and features are higher priorized as others.
The priorization therefore is mostly driven by customer requests. The more customers request a new feature or complain about a bug the more it is likely to be included within the next version.
On the other hand a new version of the Compact Framework or Windows Mobile SDK is nothing else than any project you do – you have a time schedule, which has a defined end date. This shortens the list of new functionality as well.
As you know, Windows Mobile is based on Windows Embedded CE. This means in reverse, that (often) functionality can’t be supported, if it isn’t supported by the base system. This causes a dependency, which has to be considered for new functionality as well. It is very uncommon to offer hardware-dependent functionality not offered by the base system.
But there is another dependency as well: What do you want to have the newest functionality for, if it isn’t supported by additional Tools or the Visual Studio or by Windows Mobile itself?
Even Products you don't expect directly connected to Mobility (Office, Windows) themselves can even have (a really small) influence on the schedule and planning.
Taking these points in consideration you already see, that it becomes very complex here. But there is more. Did you know for example, that each new version of the .NET Compact Framework has a limitation in memory size, which can not be extended? This leads to the point that sometimes already included functionality has to be excluded again. The limitation is given, because the Compact Framework f.e. has to fit into the ROM Image for Windows Mobile or Windows Embedded CE. This limits functionality or changes priorization in functionality as well.
It can happen during development, that new functionality turns out to slow down the system, or takes more time to be developed, optimized or tested (especially, if porting desktop functionality) which itself has an influence why things tend to be like they are.
Taking all these points into account, you can see the job becoming very hard.
Now that you know, what is taken into consideration (and I bet my summary isn’t complete here, as I don’t have a full insight) are you going to ask the mentioned question as often as you do?
Just as a short note: There are enough people out there, which try to give you the functionality you want and spend their free time for this (sometimes without funding) and do their best they can. I very like to mention the Smart Device Framework by OpenNETCF, which is a very good example for this.
I hope I could give you a satisfying answer to your question. Probably you are now even motivated to start your own project to offer yet missing functionality on CodePlex or elsewhere?
P.S.: This post is meant to be neutral. It is not meant to be pro or contra Microsoft, Product Groups or anyone else included into this process. Just take this info I give you here as is.
If you are interested in another view, I recommend reading this post from the Windows Mobile Team.
Join Microsoft Experts for an Online Chat! Smart Device Development Chat!Please join experts from the Windows Mobile, Windows CE , SQL Server CE and .NET Compact Framework communities in a chat around application development for smart devices. These chats are a great opportunity to have your questions answered by experts from around the world. Thursday, June 19, 200811:00 A.M. – 12:00 P.M. Pacific Time 2:00 – 3:00 P.M. Eastern Time 18:00 - 19:00 GMT Germany: 20 - 21 UhrJoin the chat room on the day of the chat: MSDN: www.microsoft.com/communities/chats/chatrooms/msdn.aspx
Dan Arildson und Jason Langridge präsentierten auf der TechEd in Orlando eine Session genannte Windows Mobile Smackdown. "...The Smackdown is a session where we show cool applications and
solutions for Windows Mobile. It is all Live demos - no safety nets...." Die vorgestellten Applikationen können in Jasons Blogpost hier gefunden werden. - English Version -Dan Arildson and Jason Langridge presented @ TechEd in Orlando a session Session called Windows Mobile Smackdown.
"...The Smackdown is a session where we show cool applications and
solutions for Windows Mobile. It is all Live demos - no safety nets...."
The shown applications can be found in Jasons Blogpost here.
Leider ist es nicht möglich Windows Dienste unter Windows Mobile und Windows Embedded CE in verwaltetem Code zu erstellen. Pavel Bánský's zeigt in seinem blog post, wie Services in Windows Mobile in managed code erstellt werden können. Basierend auf diesem Artikel habe ich die Managed Services for Windows Mobile Bibliothek erstellt, welche unter der MIT License nun unter CodePlex veröffentlicht wurde. Diese Bibliothek bietet die Infrastruktur, um so einfach, aber auch so komfortabel wie möglich Dienste ähnlich den Windows Diensten zu erstellen. Zugehörig zu dieser Bibliothek sind einige erstellte Hilfsprogramme, als auch Beispiele in der Dokumentation vorhanden, welche den Einstieg in die Bibliothek erleichtern Das Projekt finden Sie hier. - English Version - Actually it isn't possible to create Windows Services for Windows Mobile and Windows Embedded CE in managed code. Pavel Bánský's shows in his blog post, how Services in Windows Mobile in managed code can be created. Based on his article I've created a Managed Services for Windows Mobile library, which is under the MIT License available, published on CodePlex. This library offers an easy and comfortable infrstructure which allows to develop Managed Services similar to Windows Services. Additional to this library you can find some utilities as well as many samples in the published documentation. The project can be found here.
Alles andere, als eine leichte nervende kleine Fliege ist das RedFly der Celio Corporation. Bei diesem Gerät könnte man meinen, dass es sich um ein Subnotebook oder UMPC handelt. Dies war auch mein erster Gedanke, als ich das Gerät auf den Tisch bekam. Bei dem Gerät selbst handelt es sich um eine Art von Terminal. Soweit noch nicht spannend, wenn es sich nicht um ein Terminal für Windows Mobile 5/6 Geräte handeln würde. Eine Unterstützung für Windows Mobile 6.1 und Symbian Geräte ist angeblich in der Entwicklung. Eine Liste der aktuell und demnächst unterstützen Geräte finden Sie hier. Das 2,5 x 15,2 x 22,9 mm große Gerät besitzt neben einer QWERTY Tastatur und einem Touchpad ein 8 Zoll Display mit 800x480 Pixeln. Als Schnittstellen besitzt das Gerät 2 USB Steckplätze, sowie einen VGA Ausgang. Nicht sichbar ist natürlich die Bluetooth 2.0 Schnittstelle, über welche das Gerät mit dem PDA kommuniziert. Alternativ kann auch die USB Schnittstelle hierfür verwendet werden. Vorteil: Hierdurch wird der Akku des PDAs automatisch geladen. Das RedFly selbst besitzt einen Akku mit 4500mAh. Um eine Verbindung herzustellen, muss hierfür eine Software auf dem PDA installiert werden. Hierüber kann ich jedoch leider nichts berichten, da daß Gerät leider (noch) nicht mit deutschen PDAs zusammenarbeiten mag. Vermutlich ist da noch ein kleines Lokalisierungsproblem. Aus diesem Grund wurde mir hierzu ein englischer HTC TyTn II in der gebrandeten Version des AT&T mitgeliefert. Zur Verbindungsherstellung zwischen RedFly und dem PDA via Bluetooth genügt ein Druck auf die zugehörige Taste . Ein wenig ungewohnt ist das Bild auf dem Bildschirm schon. So sieht der Heute-Bildschirm doch ein wenig "ungewöhnlich" aus. Dafür profitieren jedoch Anwendungen wie Excel Mobile oder Acrobat Reader von der größeren Darstellung. Da passierte es einem Kollegen, welche öfters mit Tablet PCs arbeitet, doch mehrfach, dass er mit dem Finger auf dem Screen herumtappte - er hatte vergessen, dass es kein Tablet PC ist.  Einen Nachteil hat das Gerät aber: Da der PDA keine GPU besitzt, werden grafischen Anwendungen sehr langsam. Der Preis des Gerätes ist leider noch nicht bekannt. Gerüchten zufolge soll es sich aber im Rahmen von 300$ bis 499$ bewegen. Wann das Gerät verfügbar ist, ist leider auch nicht bekannt. Auch Jack Cook, ein MVP Kollege, konnte bereits das Gerät testen. Den Test finden Sie hier(http://experiencemobility.com/?p=3864#more-3864). Weitere Informationen (englisch): http://www.brighthand.com/default.asp?newsID=13665 und http://www.brighthand.com/default.asp?newsID=13909 Produktlink (englisch): http://celiocorp.com/products.php - English Version - Anything else, thank a small nerving fly is the device RedFly by Celio Corporation. At a first glimpse you could think, that this device is a Subnotebook or UMPC. This was my first thought as well as I got the device on my desk. The device itself is a type of Terminal device. Up to here nothing interesting, if the device wouldn't be a terminal for for Windows Mobile 5/6 devices. A support for Windows Mobile 6.1 and Symbian devices is in development. A list of /future) supported devices can be found here. The 2,5 x 15,2 x 22,9 mm device has a QWERTY keyboard and a Touchpad with a 8 Inch display, displaying 800x480 pixels. The device contains 2 USB slots as well as a VGA output. Not visible is the supported Bluetooth 2.0, which can be used for communicating with the Windows Mobile device. Otherwise the USB slot can be used as well. Advantage: Through a direct connection the Windows Mobile device can be charged. The RedFly itself has a battery with a capacity of 4500mAh. Establishing a connection, the PDA needs to have a software installed. Actually I can tell you anything about this, as german devices are (actually) not supported. Probably a small problem in Localisation. Therefore I got an english HTC TyTn II as a branded AT&T. For establishing the connection between the RedFly and the PDA via Bluetooth pressing a dedicated key is sufficient. A little bit distracting is the devices screen. The Today Screen is a little bit "unusual". Therefore apps like Excel Mobile or Acrobat Reader work well with the larger display. A disantvantage of the device is, that graphical applications become very slow on the higher resolution, as no GPU is present. The devices price isn't known yet. It is said to be something between 300$ to 499$. When it will be available, isn't known as well. Jack Cook, a MVP colleague, could test the device as well. The test can be found here(http://experiencemobility.com/?p=3864#more-3864). Further Information (english): http://www.brighthand.com/default.asp?newsID=13665 and http://www.brighthand.com/default.asp?newsID=13909 Product Page (english): http://celiocorp.com/products.php
Die Kollegen von OpenNETCF haben auf ihrer Community Site ein neues Whitepaper zum Thema "Managed vs. Native Code: GDI Performance" veröffentlicht. Für diesen Artikel durfte ich auch eine Inhalte beisteuern.
Neben diesem Artikel gibt es einige weitere, die auf der Community Site zu finden sind:
- Performance Implications of Crossing the P/Invoke Boundary
- An Introduction to WCF for Device Developers
- Getting a Millisecond-Resolution DateTime under Windows CE
- Using GDI+ on Windows Mobile
- Sharing Windows Mobile Ink with the Desktop
- OpenNETCF Mobile Ink Library for Windows Mobile 6
- Improving Data Access Performance with Data Caching
- Developing Connected Smart Device Applications with sqlClient
- Debugging Without ActiveSync
- Image Manipulation in Windows Mobile 5.0
- Don't Fear the Garbage Collector
All diese Artikel finden Sie hier: http://community.OpenNETCF.com/articles
- English Version -
The colleagues form OpenNETCF have published a new whitepaper called "Managed vs. Native Code: GDI Performance" on their community site. For this article I was allowed to contribute some infos.
Beside this article a few more can be found on the community site:
- Performance Implications of Crossing the P/Invoke Boundary
- An Introduction to WCF for Device Developers
- Getting a Millisecond-Resolution DateTime under Windows CE
- Using GDI+ on Windows Mobile
- Sharing Windows Mobile Ink with the Desktop
- OpenNETCF Mobile Ink Library for Windows Mobile 6
- Improving Data Access Performance with Data Caching
- Developing Connected Smart Device Applications with sqlClient
- Debugging Without ActiveSync
- Image Manipulation in Windows Mobile 5.0
- Don't Fear the Garbage Collector
All these articles can be found here: http://community.OpenNETCF.com/articles
Es gibt eine Menge Tools, die schnell als Hacking Software verurteilt werden. Doch in erster Linie dienen diese Tools der Analyse. Eines dieser Tools ist "Bluezard - Bluetooth Wizard". Diese Software ist für Windows Mobile Pocket PCs und Smarthones (ich weigere mich immer noch die neuen Namen anzunehmen), welche den Microsoft Bluetooth Stack unterstützen. Die Anwendung basiert auf dem .NET Compact Framework 2.0 und verwendet die freie Bluetooth Bibliothek 32feet.NET. Folgende Funktionen sind enthalten: * Durchsuchen des Dateisystems des verbundenen Gerätes, sowie das Hoch-/Herunterladen und Löschen von Dateien auf dem entfernten Gerät. * Senden von AT-Kommandos durch die enthaltene Terminal Anwendung. * Senden von SMS vom verbundenen Gerät. * Herunterladen empfangener SMS vom verbundenen Gerät. * Herunterladen des Telefonbuchs vom verbundenen Gerät. * Empfangen von Dateien via Bluetooth. * Abfragen erweiterter Informationen des verbundenden Gerätes: Bluetooth Hersteller, verfügbare Dienste, Bluetooth Addresse. * Abfragen des unsichtbaren Gerätestatus. * Bluezard verwendet eine Geräteliste, so dass ein häufiges Scannen für Geräte unnötig ist! * Versenden von Nachrichten! * Viele weitere Funktionen. Fazit: Eine handliche Anwendung zum Testen von Bluetooth Fähigkeiten, welche man haben sollte. - English Version - There are a lot of tools, which are labeled very fast as hacking software. But most of these tools are used primarily for analysis. Such a tool is for instance "Bluezard - Bluetooth Wizard". This software is for Windows Mobile Pocket PCs and Smarthones (I still refuse to use the new names) which support the Microsoft Bluetooth Stack. The application is based on the .NET Compact Framework 2.0 and uses the free bluetooth library 32feet.NET.  Following functions are included: * Browse remote device filesystem, download, upload and delete files on a remote-device, create folders. * Control remote-device by sending AT-commands. It has built-in terminal. * Send SMS from remote-device. * Download SMS from remote-device. * Download phonebook from remote-device. * Receive files sent via Bluetooth. * Get extended info about remote-devices: bluetooth manufacturer, avaible services, bluetooth address. * Get invisible device status. * Bluezard is using system device list, so you don’t need to scan for devices every time! * Send messages to remote-device * Many more functions Conclusion: A handy app for testing bluetooth functionality.
Paul Yao präsentierte gestern bei der WE-DIG session () die Neuerungen des .NET Compact Frameworks 3.5. Die Session ist als Onlinevideo bei Channel 9 abrufbar.
- English Version -
Paul Yao presented yesterday the news on the .NET Compact Framework 3.5 at the WE-DIG session. The session can be viewed on Channel 9.
Treten Sie mit Experten für Windows Mobile, Windows CE, SQL Server CE und dem .NET Compact Framework Communities in Kontakt rund um Anwendungsentwicklung für mobile Geräte. Diese Chats bieten eine gute Möglichkeit Fragen durch weltweite Experten beantortet zu bekommen.
------------------------------------------------ Nehmen Sie mit uns online teil für unsere interaktive Fragen- und Antwortrunde am Dienstag dem 13. Mai um 10 am US Pacific Time 11 am US Mountain Time 12 pm US Central Time 1 pm US Eastern Time 6 pm BST 19 Uhr deutscher Zeit
------------------------------------------------ Um am Chat teilzunehmen folgen Sie bitte dem Link: http://www.microsoft.com/communities/chats/chatrooms/msdn.aspx
- English Version -
Please join experts from the Windows Mobile, Windows CE, SQL Server CE and .NET Compact Framework communities in a chat around application development for smart devices. These chats are a great opportunity to have your questions answered by experts from around the world.
------------------------------------------------ Join us online for our live interactive developer Q&A Tuesday 13th May at 10 am US Pacific Time 11 am US Mountain Time 12 pm US Central Time 1 pm US Eastern Time 6 pm BST To convert from GMT to your local time, use the link below: http://www.worldtimeserver.com/current_time_in_RU-MOW.aspx ------------------------------------------------ To join the chat use the following link: http://www.microsoft.com/communities/chats/chatrooms/msdn.aspx
Wer in der glücklichen Lage sein sollte an der TechEd in Orlando vom 3. bis zum 6. Juni teilnehmen zu können, der wird sich freuen eine Menge an Tracks zum Thema Mobility zu finden. Der Grund liegt darin, daß dieses Jahr keine MEDC statt findet. Zu den ausgewählten Speakern gehören Nickolas Landry, Rabi Satter, Loke Uei Tan, Maarten Struys, Daniel Moth, Jim Wilson, Paul Yao und Alex Yakhnin. Eine Liste der Sessions finden Sie hier. - English Version - The lucky ones, who will be beable to attend at the TechEd TechEd in Orlando June 3rd to June 6th, will be glad to hear that a lot of mobile sessions will be offered. The reason for this is, that there will be no MEDC this year. Beside other speakers following ones will have a session: Nickolas Landry, Rabi Satter, Loke Uei Tan, Maarten Struys, Daniel Moth, Jim Wilson, Paul Yao and Alex Yakhnin. A list of session can be found here.
Fast jeder kennt doch mittlerweile Guitar Hero. Aber kennt ihr auch Guitar Zero? Bei dem Spiel handelt es sich um einen freien Klon für den PC, welcher neben der Tastatur und Joysticks auch diverse Guitar Hero Controller unterstützt. Ob dieses Spiel auch auf die XBox360 portiert wird, da es auf dem XNA Framework basiert, ist nicht bekannt. In den Foren gibt es neben den Songs der Guitar Hero Serie auch jede Menge weiterer Songs. Danke Simon für diese Info. Link: Guitar Zero Forums (Quelle / Source: http://guitar-zero.en.softonic.com/) - English Version - Almost everybody knows already Guitar Hero. But do you know Guitar Zero? This game is a free clone for the PC, which supports besides keyboards and joysticks original Guitar Hero Controllers. As the game is developed with the XNA Framework a port to XBox360 would be possible but not known. In the Forums all songs from the Guitar Hero series as well as tons of other songs as well. Thanks Simon for this info. Link: Guitar Zero Forums
Da die Struktur des Teams für Visual Studio for Devices und des .NET Compact Framework Teams sich geändert haben und teilweise auch zusammengefasst wurden, gibt es aus diesem Grund auch einen neuen übergreifenden Teamblog, welcher ab sofort hier zu finden ist. Auch das Thema Silverlight Mobile soll an dieser Stelle Platz finden. - English Version - As the structuir of the Vuisual Studio for Device Team and the .NET Compact FFramework Team has changed and partly combined, a new team blog has been created, which can be found here. As well the topics on Silverlight Mobile will be covered there as well.
Aufgrund eines technischen Fehlers ist dieser vorher veröffentlichte Eintrag leider wieder verschwunden. Due to an error this previous published entry vanished from the system Während das deutsche Windows Mobile Developer Center ein wenig "informationsarm" zu sein scheint, so lohnt sich aktuell ein Blick auf die amerikanische Version. Diese stellt nun diverse Kategorien auf der Hauptseite dar, für welche auch separate RSS Feeds aboniert werden können. Die rechte Navigationsleiste "Getting started with Windows Mobile" bietet eine große Sammlung interessanter Link diverser Themengebiete, die ansonsten nur schwer auf den MSDN Seiten zu finden sind. Auch werden auf dieser Seite Blogeinträge, welche auch von MVPs stammen, dargestellt. Leider ist dies auf der deutschen Seite nicht so, obwohl die Einträge von Frank Prengel ebenfalls allesamt interessant sind. Wer aber steckt nun als Person hinter der englischen Seite? Die nette Dame heißt Constanze Kratl, ehemals Roman, welche erst sich seit einigen Wochen mit diesem Thema beschäftigt. Sie hat einen eigenen Mobile Blog, welchen Sie hier finden. Auch dieser ist definitiv lesenswert. Schauen Sie also mal rein. Es lohnt sich! - English Version - As the german Windows Mobile Developer Center seems to be a little poor on information, a look on the american Version is very helpful. This one shows different categories on the main page, where each one can be subscribed by a specific RSS Feed. The navigation bar on the right corner "Getting started with Windows Mobile" offers a large library of interesting Links on different topics, which can be found otherwise very hard on the MSDN Pages itself. As well on this page blog postings are shown here as well, which are written by MVPs as well. Unfortunatly this isn't the case on the german site. But Frank Prengels blog entries are interesting as well. But who is behind the english site? This very nice woman is called Constanze Kratl, Roman before, which just has started on this topic a few before. She has her own mobile blog here. This one should be read as well. So my advice: Take a look over there. It's worth the time!
Seit heute ist es nun möglich, mich auch direkt via Windows Live Messenger anzuschreiben. Doch anstatt meine Adresse hier direkt preis zu geben, oder aber Sie zu zwingen, den Windows Live Messenger installieren zu müssen, können Sie mich direkt aus meinem Blog anschreiben. Hierzu finden Sie unten in der Navigationsleite eine eingebettete Variante der Windows Live Messengers als Plugin, worin Sie auch meinen Status verfolgen können. Ich hoffe, dies hilft meinen Lesern einfacher mit mir in Kontakt zu treten. Diejenigen, welche die Seite parsen möchten, um die Live ID zu finden: Das Plugin funktioniert anders, so daß diese Information nicht enthalten ist. Eine Beschreibung, wie man sich selbst dieses Plugin in seine WebSite integriert, findet man hier. P.S.: Das Plugin funktioniert natürlich auch mit anderen IM-Anwendungen, wie beispielsweise Miranda IM.  - English Version - Since today it is now possible to contact me directly via Windows Live Messenger. Instead of publishing my adress here or forcing you to install Windows Live Messenger on your Desktop, you can contact me directly via my blog. Therefore you can find an integrated Windows Live Messengers as a Plugin in my navigation frame, where you can track my status as well. I hope this helps getting easier contacting me directly. Those who want to parse my blog for my Live ID: The plugin works different, so this information isn't included. A description on how to integrate this Plugin directly within your page can be found here. P.S.: The Plugin works with other IM-applications as well, like the Miranda IM. 
Wie lassen sich heutzutage Enterprise Anwendungen, oder oft auch Line of Business (LOB) Anwendungen genannt, mit neuesten Technologien und Best Practices realisieren? Ein solches Beispiel zeigt der Windows Mobile Line of Business Solution Accelerator 2008 von Microsoft. Dieser verwendet neben dem Visual Studio 2008 als Basis auch das .NET Compact Framework 3.5 inklusive LINQ und WCF Store and Forward auch die Sync Services für ADO.NET. Zusätzlich sind viele Tipps und Trick enthalten, welche man kennen sollte. Eine genaue Übersicht über das Packet erhalten Sie hier. - English Version - Wie can enterprise applications, or as well called Line of Business (LOB) applications, be developed with the latest technologies and best practices? Such a sample is now available as Windows Mobile Line of Business Solution Accelerator 2008 by Microsoft. This sample uses Visual Studio 2008 and the .NET Compact Framework 3.5 including LINQ and WCF Store and Forward as well as the Sync Services für ADO.NET. Additional Tips and Tricks are included, which you should know about. A detailed overview can be found here.
GPS Programmierung ist doch heute in aller Munde. Doch kaum einer weiß genau, wie das geht. Raffaele Limosani zeigt in seiner Reihe "GPS Programming Tips for Windows Mobile", was alles möglich ist und gibt tiefgehende Informationen zum Besten. Sie finden den 3. Teil der Reihe, welcher Verknüpfungen zu den vorherigen Teilen besitzt, hier. - English Version - GPS Programming is very popular nowadays. But still noone really knows exactly how it works. Raffaele Limosani shows in his parts "GPS Programming Tips for Windows Mobile", what is possible and provides in-depth information. You can find part 3, which includes links to the previous parts, here.
Windows Mobile 6.1 ist ja schon ein paar Tage auf dem Markt, aber man hört immer nur, dass sich kaum etwas geändert hat. Was hat sich denn also nun geändert? Mel Sampat zeigt in seinem Blog ein 40 minütiges Video, welches alle Neuerungen aufzeigt. Leider wird das System Center Mobile Device Manager 2008 (SCMDM) nicht berücksichtigt. Zu sehen ist das Video in voller Länge hier. Welche Funktionen sich geändert haben oder neu hinzugekommen sind seit Windows Mobile 5, sehen Sie in dieser einfachen Übersicht. (gefunden in Frank Prengels Blog). Sie wissen noch gar nicht, was das SCMDM ist? Dann sollten Sie sich auf jeden Fall hier die Übersicht mit weiterführenden Links auf www.msfaq.de einmal anschauen. (Danke Frank Carius für den Hinweis). Sollten Sie bereits einen SCMDM erfolgreich aufgesetzt haben, so finden Sie viele hilfreiche Tools hier als "System Center Mobile Device Manager 2008 Ressource Kit Tools" bei Microsoft TechNet, welche Sie bei der Konfiguration und beim Deployment unterstützen. (Zur Zeit sind die Tools aktuell, jedoch aus nicht bekannten Gründen, nicht verfügbar). Was aber ist, wenn man das SCMDM erfolgreich installiert hat und kein Gerät mit Windows Mobile 6.1 sein eigen nennen kann? An dieser Stelle hilft dann der Emulator aus. Diesen findet man hier als Download, aktuell jedoch nicht in lokalisierten Fassung. Welche Konfiguration auf dem Emulator vorgenommen werden muss, erfahren Sie unter den Technical Articles for Mobile Device Manager (gefunden in Jason Langridge's Weblog). - English Version - Windows Mobile 6.1 is already a few days on the market, but you mostly hear, that just some parts have changed. So, what has changed exactly? Mel Sampat shows in his blog 40 minute long video, which covers all changes. Unfortunately topics on the System Center Mobile Device Manager 2008 (SCMDMare not covered. You can watch the whole video here. What functionality has been changed or added since Windows Mobile 5, can be seen in this Overview. (found in Frank Prengels Blog). You don't know anything about the SCMDM? In this case you should take a look at this Overview (only german) at www.msfaq.de, which includes further Links to additional information. (Thanks to Frank Carius for this tip). If you have sucessfully set up your SCMDM already, you can find additional tools here as "System Center Mobile Device Manager 2008 Ressource Kit Tools" on Microsoft TechNet, wich help you with further configuration and deployment. (At this time these tools are unfortunately down). What if you have set up your SCMDM sucessfully, but you don't have any device running Windows Mobile 6.1? Here your Emulator can help out. It can be found here for download, but actually not in a localised version. Which configurations have to be done for the emulator can be found in the Technical Articles for Mobile Device Manager (found in Jason Langridge's Weblog).
Provisioning XML ist eigentlich die einfachste Art, Windows Mobile zu konfigurieren. Sie wollen mehr wissen? Dann empfehle ich Ihnen wärmstens diesen englischen Artikel von Reed Hegenderfer. Er beschreibt detailliert Hintergründe und gibt nützliche Tipps und Tricks. Auf jeden Fall lesen!!! - English Version - Provisioning XML is the easiest possibility to configure Windows Mobile. You want to know more about? In this case I suggest reading this english article by Reed Hegenderfer. He dives in deeply into this topic and shows usefull Tips and Tricks. A must to read!!!
Der Standardcursor unter Windows Mobile ist auf Dauer schon ziemlich eintönig. Wie Sie selbst einen animierten Cursor erstellen und verwenden können, zeigt Ihnen Christopher Fairbairn hier. Chris, du hast zu viel Zeit.  - English version - The standard animated wait cursor under Windows Mobile get's really annoying. How to create a custom wait cursor and how to use it in your application, is shown here by Christopher Fairbairn. Chris, you have definitly to much free time.  
Wie ist es möglich, die Versionsnummer von Windows Mobile zu ermitteln? Eigentlich erhält man doch nur die unterliegende Windows CE Version. Des Rätsels Lösung ist die Versionsnummer des Adoption Kit Update (AKU), welches vergleichbar mit der eines Service Packs unter Windows ist. Christopher Fairbairn beschreibt hier detailliert die Hintergründe und zeigt, wie diese Information ausgelesen werden kann. Sehr gut Chris! - English Version - How is it possible to retrieve Windows Mobiles version number? In general you only get the underlying version number of Windows CE. The version number can be retrieved through the version number of the included Adoption Kit Update (AKU), which is kind of similar to Service Packs under Windows. Christopher Fairbairn describes here in detail the background information and shows how to get this info programatically. Well done Chris!
Zwar ist die News schon ein paar Tage alt, aber noch nicht jeder hat davon gehört: Windows Mobile 6.1 ist am 1. April erschienen. Was es Neues kann, und welche Geräte ein Update erhalten sollen, erfahren Sie hier. - English Version - Okay, the news isn't the freshest, but still not everyone has heard about it: Windows Mobile 6.1 is out since April 1st. If you want to know, what has been newly included and which devices are supposed to get an Update, read on here.
Leider komme ich jetzt dazu, dieses freudige Ereignis zu bloggen, da ich letzte Woche mich in England befand. Dienstag war somit ein Tag voller Freude, denn ich wurde von Microsoft mit dem Microsoft Most Valuable Professional (MVP) Award für Device Application Development ausgezeichnet. Dies gibt neue Kraft in diesem Bereich weiter zu arbeiten und zeigt, dass ich auf dem richtigen Weg bin.
Bevor ich nun allen Danke, die mich hierbei unterstützt haben und ein Artikel im Blog eine bestimmte Größe nicht überschreiten darf, gilt mein erster Dank Microsoft und somit auch den MVP-Leads Katrin Letzel & Florian Eichinger. Kurzum: Allen Vielen Dank, die mich unterstützt haben.
- English Version -
Unfortunatelly I come now to blog about this joyfull occasion, as I've been in England last week. So Tuesday was a day full of joy, as I have been awarded with the Microsoft Most Valuable Professional (MVP) Award for Device Application Development. This gives me fresh power and shows that I'm on the right path.
Before starting now thanking everyone, who supported me and an article sin this blog shouldn't exceed it's boundaries, my first Thank You is going to Microsoft, especially the MVP-Leads Katrin Letzel & Florian Eichinger. In short: Thanks everyone, who supported me. Technorati Profile
Jetzt, wo das Visual Studio 2008 mit dem .NET Compact Framework 3.5 offiziell erhältlich ist, ist eine kleine Einführung in die Änderungen und Neuheiten nicht verkehrt. Aus diesem Grund erstellten Simon Hackfort und ich genau zu diesem Thema einen Artikel für das deutschsprachige Magazin Visual Studio One der ppedv AG. Als kleines Bonbon können Sie sich nun die Ausgabe 01/08, welche u.a. diesen Artikel enthält, diese Ausgabe kostenlos nach Hause schicken lassen. Das Angebot besitzt keinerlei weitere Verpflichtung. Geben Sie einfach unter http://www.visualstudio1.de/freeissue.aspx als Promocode den Wert "PNVSP1" an und schon erhalten Sie kostenlos die Ausgabe 01/08. Zugreifen, solange der Vorrat reicht!
Darf es ein bisschen mehr sein? Dann geben Sie unter der eben genannten Webadresse den Promocode "PNVSP2". Dabei erhalten Sie zur Ausgabe 01/08 zusätzlich noch die aktuelle Ausgabe. Beachten Sie jedoch bitte dabei, daß wenn 2 Wochen nach Erhalt das Abo nicht abbestellt wird, dieses dann als reguläres Jahresabo mit 6 Ausgaben weitergeführt wird. Der Preis dabei wird jedoch von 33 € auf 25 € ermäßigt. Es lohnt sich also. - Englische Version - Now, as the Visual Studio 2008 including the .NET Compact Framework 3.5 is officially available, a little introduction on news and changes on the topic can not be wrong. Out of this reason Simon Hackfort and I have written an article on this topic which has been published by the german magazine Visual Studio One by ppedv AG. As a little goodie the issue 01/08, which includes the mentioned article, can be ordered for free. This offer doesn't include any further covenant. Grab it as long as available Just navigat to http://www.visualstudio1.de/freeissue.aspx and enter "PNVSP1" as promotional code and you get the issue 01/08. Want to have a bit more of it? Then use the promotional code "PNVSP2" instead. Therefore you get the issue 01/08 and additionally the actual issue. Please be noted, that if you don't cancel the agreement 2 weeks after the arrival of the free issues, the supscription turns into a supscription for a year including 6 issues. Therefore the price is lowered to 25 €, instead of the regular price of 33 €. It's worth the money.
Christopher Fairbairn zeigt in seinem Blog, wie mit ein wenig Hilfe Elemente für den Heute-Bildschirm in C# und VB.NET erstellt werden können. Normalerweise ist dies nur aus unverwaltetem Code möglich. Christopher jedoch stellt hierfür eine kleine Bibliothek zu Verfügung. Ein Beispiel ist ebenfalls erhältlich. Den kompletten Post finden Sie hier. - English Version - Christopher Fairbairn describes in his blog, how with a little help today screen items can be created directly in C# and VB.NET. Normally this is only possible in native code. But CHristopher has created a little library for this. A sample is also available on his site. The complete post can be read here. 
Wie Chris Tacke von OpenNETCF.org berichtet, wurde das Smart Device Framework (SDF) 2.2 veröffentlicht. Neben vielen Bugfixes sind auch einige neue Klassen und Methoden enthalten. So lassen sich nun Dienste über die Klasse Service Laden, Starten, Beenden und wieder entladen. Eine vollständige Liste der Fixes und Neuheiten gibt es hier. Den Download, sowie das ebenfalls erhältliche SDF 2.1 SP1 gibt es hingegen hier. - English Version - Chris Tacke from OpenNETCF.org announces, that the Smart Device Framework (SDF) 2.2 is released. Along many bugfixes also new clases and methods can be found within the SDF. WIthe the Service class for example it is now possible to load, start, stop and unload services. A complete list of bugfixes and enhancements can be found here. The Download, as well as the SDF 2.1 SP1 can be found here.
Nachdem es ein wenig ruhiger bzgl. neuer Artikel geworden ist, sind nun also wieder neue Artikel erschienen. Thema: Visual Studio 2008 & .NET CF 3.5 - Neues für mobile Entwickler. Neben den Neuerungen selbst wird auch ein Einblick in die .NET Compact Framework 3.5 Powertoys gegeben. Thema: Pimp my mobile UI - Wie lassen sich Benutzeroberflächen für .NET Compact Framework Anwendungen optimieren, aufwerten und mittels Gestensteuerung besser bedienen? Dieser Artikel wurde zusammen mit meinem guten Freund Simon Hackfort zusammen erstellt. Zu lesen sind die Artikel in der Visual Studio One, Ausgabe 01/2008. - English version - After it got a bit quite around new published articles, it was time to publish new ones. Topic: Visual Studio 2008 & .NET CF 3.5 - New features for mobile Developers. Beside the new features a peek overview of the .NET Compact Framework 3.5 Powertoys is included as well. Topic: Pimp my mobile UI - How can the UI of .NET Compact Framework applications be optimized, enriched and through gesture recognition be enhanced? This article was written with a good friend of mine Simon Hackfort. These articles can be read in the Visual Studio One magazine, issue 01/2007.
Wie ich bereits im vorherigen Post andeutete, habe ich noch das eine oder andere Bonbon für Sie.
Nun wird es Zeit eines dieser zu Öffnen: Mit freundlicher Genehmigung des Visual Studio One Magazins der ppedv AG erhalten Sie an dieser Stelle zum kostenlosen Download meine bis Mai 2007 veröffentlichten Artikel.
Somit erhalten Sie ein wenig Lesestoff für die (naja, nun auch nicht mehr so) kalten Tage.
Zwar sind nicht alles nur mobile Themen, jedoch definitiv lesenswert.
Viel Spaß damit.
- English Version -
Like I posted before, I have the one or other sweet waiting for you.
Now it is time to unfold one: With permission from the Visual Studio One Magazine from the ppedv AG you can donwload my published german articles up to May 2007 for free.
With it you can read them offline in those cold (well, actually not that cold) days.
Not all of them are covering only mobile topics, but still are worth to read.
Have fun with it. Artikel / Articles:
Zugegeben: Man braucht ihn seltener - den Taschenrechner unter Windows Mobile. Haben Sie ihn schon mal versucht unter Windows Mobile 6 aufzurufen? Zumindest im MDA Vario III und MDA Touch ist dieser nicht aufzufinden. Es gibt einfach keine Verknüpfung unter Programme Anscheinend ist wohl ein kleiner Fehler beim Erstellen des ROMs passiert, denn er ist auf den Geräten vorhanden. Lediglich die Verknüpfung scheint ein wenig durcheinander gekommen zu sein. Kopieren Sie einfach die Datei \Windows\calc.lnk nach \Windows\Startmenü\Programme und schon finden Sie unter calc ihren gewohnten Taschenrechner wieder. - English Version - I have to admit: I'm using it not very often- the calculator on Windows Mobile. Have you ever tried to run it on Windows Mobile 6 ? Especially on the german MDA Vario III and MDA Touch you won't find it. There is no Link under Programs. It seems like an error has happend on creating the ROM, as the calculator itself is present on those devices. Only the Link is missing. In that case just copy the file \Windows\calc.lnk to \Windows\Start Menu\Programs and you'll find the Calculator again under the entry calc.
Wer Zeit und Lust und mehr über die WCF im .NET Compact Framework, insbesondere zum "Store and Forward Messaging" zu erfahren, denen empfehle ich den heute Abend in englischer Sprache stattfindenden WebCast sich anzuschauen. Anmeldung und weitere Informationen gibt es hier. - English Version - For those who are interested to learn more about WCF in the .NET Compact Framework, especially on "Store and Forward Messaging", I recommend to participate in tonights (speaking in terms of GMT+1) WebCast on this topic Registration and additional information can be found here.
Diejenigen, die bereits mit dem finalen .NET Compact Framework 3.5 unter Visual Studio 2008 entwickeln, fehlten hier und da die bereits bekannten "PowerToys for .NET Compact Framework 3.5", welche vorab als CTP für die Beta 2 verfügbar waren. Gestern bereit erschien nun die finale Version dieser PowerToys. An den enthaltenen Tools hat sich selbst nicht geändert. Sie wurden "lediglich" aktualisiert und fehlerbereinigt. Welche Tools enthalten sind, erfahren Sie beispielsweise hier. Einige zusätzliche Hinweise zu den Änderungen des NetCFSvcUtil erhalten Sie hier. Unter diesem Link sind die Power Toys selbst erhältlich. - English Version - Those, who are already working with the final .NET Compact Framework 3.5 in Visual Studio 2008, often miss the "PowerToys for .NET Compact Framework 3.5", which have been available as CTP for Beta 2. Yesterday the final version of these PowerToys has been released. The included tools themselves haven't changed. They have been updated an bugfixed. Which Tools are included can be seen here. Some additional notes on changes for the NetCFSvcUtil Utility can be seen here. This link get's you to the download.
Ein jeder kennt das: Die heutigen "Push" Dienste basieren entweder auf langläufigen HTTP Requests, oder "Always On" Verbindungen, welche sich nicht unbedingt schonend auf den Akku auswirken. Dabei erhält man bei jeder Einwahl zusätzlich eine neue IP, welche das Adressing schwierig gestaltet, insbesondere, wenn über das Gerät Services (WebServer etc.) angeboten werden sollen. Für dieses Problem gibt es schon seit geraumer Zeit entsprechende Hoster für dynamische DNS Einträge. Um diese nun auch vereinfacht nutzen zu können, gibt es jetzt auch die von mir entwickelte Bibliothek, mit welcher diese DNS-Einträge mit der aktuellen IP-Adresse aktualisiert werden können. Die nahtlos-mobil.de DynamicDNS Library 1.0 wurde für das .NET als auch das .NET Compact Framework ab Version 2.0 entwickelt. Sie liegt unter der MIT-Lizenz (oder auch der kleinstmöglichen freien Lizenz) zur freien Verwendung bereit auf CodePlex bereit. Neben einer Beispielanwendung, steht neben der Bibliothek mit mehreren bereits vorhandenen Providern noch eine Dokumentation der API im CHM-Format zur Verfügung. Mehr Informationen und die Bibliothek selbst gibt es hier: http://www.codeplex.com/DynamicDNS P.S.: Danke Neil für die Unterstützung und Ratschläge! English Version Everybody knows the problem: Todays "Push" Services are based on long running HTTP Requests or on "Always On" Connections, which aren't well regarding power consumtion. On each established connection you get a new IP assigned, which hardens the Adressing of those devices, especially when they are offering services like WebServers and more. For this old problem a a solution is already existing for long period of time. There are hosters available, which offer services for dynamic DNS entries. For a simplified usage I've developed a small library, which updates those servers with the current assigned IP Address. The "nahtlos-mobil.de DynamicDNS Library 1.0" has been developed for the .NET Framework as well as for the .NET Compact Framework 2.0 or later. The library is completly free and has been released under the MIT-License, being hosted on CodePlex . Beside a sample application and several builtin providers a documentation for the API can be found in CHM format as well. More Information and the library can be found here: http://www.codeplex.com/DynamicDNS P.S.: Thanks Neil for your support and advices! 
Man kennt das Problem: Man ist unterwegs und es ruft ein Kunde an. Dabei stellt sich heraus, daß man eine kleine Änderung am Quellcode machen muss. Meist hat man dann auch kein Notebook dabei. Eine kleine Abhilfe schafft hier die C# IDE Mobile von Harvey Rowson. Diese "Entwicklungsumgebung" für Windows Mobile ist nun in Version 10 verfügbar und ermöglicht die Bearbeitung von CS-Dateien von unterwegs. Syntax Highlighting, Debuggen und eine Designer Ansicht sind nicht vorhanden, doch für kleinere Änderungen reicht dies meist aus. Dafür sind einige Schnellbefehle für Codeformatierung, diverse Sprachkonstrukte (Schleifen etc.) als auch ein Assembly-Betrachter im Menü vorhanden, die das Entwickeln ein wenig erleichtern. Eine Kompilierung ist leider ebenfalls nicht möglich, jedoch lässt sich der Sourcecode dennoch ausführen. Kurz gesagt: Ein ziemlich "geekiges" aber cooles Tool. English Version The problem is known: You are on the road and suddenly your customer calls. It results, that some minor changes have to be done in the Sourcecode. Unfortunatelly the Notebook isn't present. A small Solution for this problem can be the C# IDE Mobile by Harvey Rowson. This "IDE" for Windows Mobile is now available in V10 and enables the possibility of Editing CS-Files on the road. Syntax Highlighting, Debugging and a Designer View are missing, but for smaller changes this IDE is sufficient. Therefore some Quick Menuitems like Codeformating, several Statements(for -loop etc.) as well as an Assembly-Viewer are integrated, which support the development. Compiling isn't featured as well, but the Code can be "Run" on the device. Summing up: A very "geeky" but cool Tool.
Für diejenigen, welche in den letzten Monaten auf meiner Session zum Thema "Neuerungen im Visual Studio 2008 für mobile Entwickler" waren, können jetzt nun endlich selbst Hand anlegen: Visual Studio 2008 ist da. Doch leider nicht für alle. Während man als MSDN Abonnement die Software (zumindest in der Team Edition ab Premium Subscription) die Software bereits herunterladen können (weitere Editionen wurden noch nicht entdeckt - Stand 19.11.2007 14:32 Uhr), müssen sich reguläre Käufer noch bis Februar 2008 gedulden. Dann erst gibt es die Software regulär zu kaufen. English Version For those who have attended to my session "New stuff around Visual Studio 2008 for mobile developers" in the last several month now have the possibility to get dirty: Visual Studio 2008 is released, but not for everyone: While the software can be downloaded via MSDN Subscription (it is VS 2008 Team Edition via MSDN Premium Subscription, other versions haven't been spotted yet - 2007/11/19 2:32 PM)) persons who want to buy the software have to wait for the official release in february
Halloween steht vor der Tür - zugegeben, in Deutschland ist dieses Happening nicht weit verbreitet, jedoch wird es von Jahr zu Jahr populärer. Wer auch sein Windows Mobile Gerät ein wenig "grusseliger" gestallten möchte, kann dies mit kostenlosen Hintergrundbildern, als auch Klingeltönen tun. Diese sind hier bei Microsoft direkt per Download erhältlich. - English Version - Halloween is coming closer - agree, in Germany this Happening isn't very common, but it is getting from year to year more popular. Who wants to make his Windows Mobile Device a bit more "spooky" can do this with free available Backgrounds and Ringtones. These are available here for direct download. bei Microsoft direkt per
Mit dem Windows Mobile 5 & 6 SDK ist es eigentlich ganz einfach mit Pocket Outlook im .NET Compact Framework zu arbeiten. Was jedoch fehlt ist ein generelles Ereignis, welches die Anwendung informiert, wenn sich Änderungen innerhalb der Kontakte, Termine oder Aufgaben ergeben. Mit dem PoomFolderMonitor von Jim Wilson ist dies nun möglich. Mehr zu diesem Thema und natürlich auch die Software gibt es hier. - English Version - Using the Windows Mobile 5 & 6 SDK it is pretty easy to work with Pocket Outlook in conjunction with the .NET Compact Framework. What is missing is the an event notifying the application on changes in an appointment, task or contact. Using Jim Wilsons PoomFolderMonitor makes this happen. More on this topic as well as the Software are available here.
Wer sich schon immer einmal eigene Themes für sein Windows Mobile Gerät erstellen wollte, oder aber erfahren möchte, was alles dahintersteckt, sollte einen Blick laut MobilityNews.net auf die Freeware ThemeGenCE werfen.
- English Version -
Whoever was interested in creating his own Themes for his Windows Mobile Device, or wants to know how it is done shall have a look at the Freeware ThemeGenCE, which has been reported by MobilityNews.net.
Wie PocketNow.com berichtet, soll es wohl mit Windows Mobile 6.1 ein Update für die Benutzeroberfläche geben. Diese soll über eine vertikalle, drehbare Bildlaufleiste verfügen. Diese "Carousel" genannte Technik soll mit Windows Mobile 6.1 Anfang Februar bereits erscheinen. Dabei soll diese jedoch nur für Smartphones, respektive Windows Mobile 6.1 Standard verfügbar sein. Mehr zu diesem Thema hier. - English version - PocketNow.com reports, that Windows Mobile 6.1 will have an Update on the UI. This is to be a vertical Scrollbar named "Carousel" and is to be released with Windows Mobile 6.1 at the beginning of February. It is explicitly designed for Smartphones aka Windows Mobile 6.1 Standard. More on this topic can be found here.
War es bisher nur mit dem Exchange Server 2003 SP2 in Kombination mit dem Messaging & Security Feature Pack for Windows Mobile 5.0 möglich, die Windows Mobile Geräte vernünftig bzgl. Sicherheit insbesondere im Enterprise Umfeld zu verwalten und zu administrieren, so ist dies nun auch direkt mit dem System Center Mobile Device Manager 2008 möglich. Das schöne daran ist, daß man die Software zwar in Kombination mit dem Exchange Server nutzen kann, jedoch ist dies nun nicht mehr vorausgesetzt. Zu den wichtigsten Features zählen: -
Active Directory/Group Policy Domain Join -
Mobile VPN with Dual Factor Authenticated Access -
Communications and Camera Disablement with Active Directory Group Policy-based Targeting -
Application Allow and Deny -
Device Encryption -
OTA Device Provisioning and Bootstrapping -
OTA Software Deployment -
Device Inventory and Reporting -
Helpdesk Console and Role-Based Administration -
Device Wipe Mehr Informationen zu diesem Thema erhalten Sie hier, hier und hier. - English Version - Was it only possible with Exchange Server 2003 SP2 in conjunction with the Messaging & Security Feature Pack for Windows Mobile 5.0 to administrate Security Windows Mobile Devices in the Enterprise properly, it can be done now with the System Center Mobile Device Manager 2008. The nicest about it is, that an Exchange Server isn't mandatory anymore. The important features are: -
Active Directory/Group Policy Domain Join -
Mobile VPN with Dual Factor Authenticated Access -
Communications and Camera Disablement with Active Directory Group Policy-based Targeting -
Application Allow and Deny -
Device Encryption -
OTA Device Provisioning and Bootstrapping -
OTA Software Deployment -
Device Inventory and Reporting -
Helpdesk Console and Role-Based Administration -
Device Wipe More on this topic can be found here, here und here.
Jeder kennt diese kleine Meldung, wenn eine Kurznachricht versendet wurde. Mike Temporale zeigt in seinem Post, wie sich diese auf Dauer nervende Meldung in der Registry auf seinem mobilen Gerät deaktivieren lässt. - English Version- Everyone knows this tiny message, when a short message was sent. Mike Temporale shows in his Post, how this annoying message can be disabled with the Windows Mobile Registry.
Christopher Fairbairn berichtet im Windows Mobile Development Blog, wie sich die Möglichkeiten für Notifications um eigene Softkeys erweitern lassen. Der Artikel ist hier zu finden. - English Version - Christopher Fairbairn reports in his Windows Mobile Development Blog, how to customize the soft keys for Notifications. The article can be found here.
Das Thema QR Code, oder aber auch 2D Barcode genannt, ist ein interessantes Themenfeld. So lassen sich in diesen kleinem Barcode einige Informationen hinterlegen (ca. 1700 Zeichen), die bereits für gewisse Anwendungsfälle komplett ausreichend sind. In Verbindung mit einem Windows Mobile Gerät und einer integrierten Kamera besitzt man bereits alles was man benötigt, um solche Codes lesen zu können.
In Asien ist dies schon seit längerem ein Hype: Kein Handy wird ohne eine solche Software ausgeliefert; keine Coladose, die keinen Code enthält.
Auch Microsoft hatte einiges Bestreben, um sich diesem Thema anzunehmen: Windows Live Barcode und Windows Live Confucius (für eine eher japanische Variante der Barcodes) hiessen die Projekte, welche allerdings momentan anscheinend nicht weitergeführt werden: Beide Projektseiten sind momentan nicht erreichbar. Dabei bot ja Confucius mittlerweile bereits einen Client für Windows Mobile Geräte an (Dopod 828 und 838), welcher zu vielen Windows Mobile 5 Geräten kompatibel war.
Microsoft selbst scheint eher den Weg des 4D-Barcodes zu verfolgen, in welchem auch durch Farbinformationen Werte abgelegt werden können. So berichtet es der Mobile Tagging Blog, welcher darüber hinaus auch noch andere Barcode Technologien beschreibt.
Mark Arteaga berichtet, das es nun eine freie QRCode Komponente von OpenNETCF für das Compact Framework gibt. Mit dieser ist es möglich Bilddateien, welche einenn Barcode enthalten zu dekodieren. Zwar ist nach eigenen Worten die Erkennungsrate noch nicht so optimal, so daß eine Kamera mit mehr als 1,3 Megapixeln verwendet werden soll, jedoch denke ich, daß es noch Optimierungspotential dahingehend gibt. Weiterhin beschreibt neben der Verwendung der Bibliotheker ebenfalls, wie sich Barcodes mittels Webservice erstellen lassen.
Diese Komponente steht unter der MIT 11 Lizenz und kann frei verwendet werden. Sie benötigt jedoch das SmartDeviceFramework 2.1 als Basis. Zu beziehen ist die Software hier.
- English Version -
The Topic QR Code, or also known as 2D Barcode, is an interesting phenomenon. In this little barcodes a lot of information (about 1700 characters) can be encoded, which are already more than sufficient for some use cases. In connection with a Windows Mobile device and an integrated camera everything is present to use this technology.
In Asia it is for a long time now very common: No mobile device is brought to the customer without an integrated barcode reader; no coke can available without a code on it.
Microsoft was and still is interested in this topic: Windows Live Barcode und Windows Live Confucius (for a Japanese modified version of the barcode) were the projects on this topic, but actually it seems that these have been halted, as the project sites aren't available. Thereby mobile applications have been already offered by Windows Live Confucius (Dopod 828 und 838) which were compatible to most Windows Mobile 5 devices.
It looks more like Microsoft is going for 4D Barcodes, where additional information can be included by using colors. This is announced by the Mobile Tagging Blog, which is also offering more information on other Barcode technologies.
Mark Arteaga announced a free QRCode component by OpenNETCF for the .NET Compact Framework. With this component it is possible to decode information from barcode images. In his own words he says that the recognition rate isn't the best, so that a camera with more than 1,3 MP shall be used, but I think that it is only a matter of time the rate will be improved. Additionally he describes besides the theoretical usage of the component, where barcodes can be generated by using WebServices.
The component itself is under MIT 11 license and can be therefore used for free. All you need is the SmartDeviceFramework 2.1 as base. The component can be obtained here.
Wie versprochen nun auch mal die Folien und die zugehörigen Visual Studio 2008 Beispiele als Download, welche ich beim .NET Summercamp am 27. / 28. September in Leipzig, als auch bei der Usergroup Paderborn am 1. Oktober in Paderborn vorgestellt habe.
Die Folien selbst sind als PDF Datei verfügbar, verpackt als RAR-Archiv. Die Beispiele sind einzeln erhältlich als ZIP-Archiv in der Reihenfolge, in welcher Sie vorgestellt wurden:
- LINQ to Dataset, LINQ to Objects und LINQ to XML mit dem .NET Compact Framework 3.5
- WCF / E von der Pieke auf
- WCF / E via ServiceProxy
Vielen Dank an alle die teilgenommen haben. Mir hat es viel Spaß gemacht dabei zu sein. Besonderer Dank geht an die Duisburger Jungs, welche extra für den Vortrag nach Paderborn gekommen sind.
- English Version -
Like promised, here are the slides (german only) and according Visual Studio 2008 Samples for Download, which have been presented at the.NET Summercamp 27th / 28th of September in Leipzig as well as at the Usergroup Paderborn on October 1st.
The slides are in PDF-Format available, packed as RAR. The Samples packed as ZIP are available in the order, in which they have been presented:
- LINQ to Dataset, LINQ to Objects und LINQ to XML with the .NET Compact Framework 3.5
- WCF / E from Scratch
- WCF / E via ServiceProxy Tool
Many thanks to all that have attended. I've enjoyed the time being. Special thanks goes out to the guys from Duisburger, who have traveled a long way to attend to the session.
01. SmartDeviceProjectLinq.zip (20,98 KB) 02. WcfServiceLibraryHelloWorld.zip (25,29 KB) 03. SmartDeviceProjectWCF2.zip (27,62 KB) VS_2008_B2_und_NetCF_3.5.rar (1,18 MB)
Da ist man mal 2 Tage unterwegs und schon passiert eine Menge. Daher hier ein Rollup. / 2 days on the road and a lot of things have happened. Here a Rollup. -- Wie mobilitynews.net berichtet ist das Programm Call Firewall frei erhältlich. Wie der Name bereits vermuten lässt handelt es sich bei dieser Software, welche u.a. Anrufe blockiert, durchstellt oder aber mittels SMS beantwortet. Alle weiteren Informationen zu zusätzlichen Features als auch die Software selbst sind auf der Homepage erhältlich. - English Version - mobilitynews.net reports that the program Call Firewall is available for free. As the name states the software adds f.e. the availability to block and to pass incoming calls, or answer them by Short Messaging. All additional information like additional features and the software itself are available on the homepage. -- Wie Vik Thairani in seinem Blog berichtet, ist ein Update für Office Mobile unter Windows Mobile 6 erschienen. Hiermit ist es u.a. möglich die Office 2007 Formate in Office Mobile zu verarbeiten. Ein Update für Windows Mobile 5 ist noch nicht erschienen. Mehr zu diesem Thema hier. - English Version - As Vik Thairani reports in his Blog, an Update for Office Mobile in Windows Mobile 6 has been released. There it is now possible to work with the new Office 2007 File formats. An Update for Windows Mobile 5 hasn't been released yet. More on this topic here. -- Wieso sollte man die PowerShell nicht mit einem Emulator, oder einem Gerät mittel CoreCon verwenden? Ich weiß es auch nicht. Wie man dabei vorgeht erfährt man hier. - English Version - Why not to use PowerShell in combination with an Emulator or device via CoreCon? I don't know. How to get it working can be read here.
Täglich gibt es nicht eine Person, von welcher ich nicht höre, das Windows Mobile nervt: "Es wäre schön, wenn...Das könnten die aber besser machen...". Jetzt gibt es aber auch die Gelegenheit das diese Stimmen "gehört" werden, denn im Windows Embedded Blog von Mike Hall wurde die Frage gestellt, wie man Windows Mobile verbessern kann. Wer also gute Ideen hat, kann diese hier, oder direkt in das Suggestions Box forum abgeben.
- English version -
There isn't on person each day telling me that Windows Mobile sucks: "It would be nice,if...That could be improved...". Now there is a possibility that these voices get "heard", as in the Windows Embedded Blog by Mike Hall the question was raised, how Windows Mobile could be improved. Anyone who has good ideas can post them here, or directly into the Suggestions Box forum.
Fabien Decret beschreibt in seinem Blog den Xenocode Obfuscator, welcher kompatibel mit dem .NET Compact Framework 2.0 ist. Dabei geht er u.a. darauf ein, was ein Obfuscator ist (für die, welche es nicht bereits vom .NET Framework wissen). Der Preis liegt bei 499$ für eine Entwicklereinzellizenz, sollte aber sein Geld wert sein.
Mehr Informationen zum Produkt, als auch eine 14 Tage Testversion erhält man hier.
- English Version -
Fabien Decret describes in his blog the product named Xenocode Obfuscator, which is compatible with the .NET Compact Framework 2.0. He explains f.e. what an Obfuscator is used for(for those, which don't already know what it is in the .NET Framework). The price is about 499$ as a single developer license, but it shall be woth it's price.
More information on the product as well as a 14 days trial version can be obtained here.
Wer es nicht zum .NET Summercamp schaffen sollte, hat eine weitere Möglichkeit sich über die Neuerungen im .NET Compact Framework 3.5 und im Visual Studio 2008 für mobile Entwickler zu informieren: Die Session wird am 1. Oktober bei der UG Paderborn um 18 Uhr wiederholt. In diesem gemütlichen Rahmen sollten sich auch andere Themen behandeln lassen. Daher würde es mich freuen viele Leute begrüssen zu können. Mehr Informationen zum Termin gibt es hier. - English Version - Whoever won't be able to attend to the .NET Summercamp, has another Chance to get informed on new features of the .NET Compact Framework 3.5 andVisual Studio 2008 ffor mobile developers: The session will be repeated on October 1st at the UG Paderborn at 6 PM. In this relaxing atmosphere it shall also be possible to dive into other topics. By this I would be glad to see a lot of persons come around. More information on this appointment here.
Das Erstellen von CAB-Installationsdateien für Windows Mobile ist eigentlich ganz einfach. Hierzu gibt es 2 Möglichkeiten:
- Man erstellt die Datei mittels des Projekttype "CAB-Projekt für intelligente Geräte" im Visual Studio 2005
- Man erstellt die Datei manuell mittels Skriptdatei und CabWiz.exe
(Sie finden beide Installationsarten u.a. detailliert beschrieben in Kapitel 16, Programmieren mit dem .NET Compact Framework)
Es gibt jedoch eine weitere Möglichkeit: WinCE CAB Manager von OCP Software.
Mit dieser Software ist es nicht nur möglich mittels Wizard eine CAB Datei zu erstellen, sondern eine bereits erstellte CAB-Datei zu editieren, zu exportieren und noch vieles mehr.
Zu den Editiermöglichkeiten gehören neben dem Bearbeiten von enthaltenen Dateien auch das Editieren von Registrywerten. Native Entwickler können zusätzlich ihre Setup.DLL einbinden.
Meiner Meinung nach ein wirklich brauchbares Tool, was sein Geld von 99$ Wert ist.

- English Version -
Creating CAB-Files for Windows Mobile is pretty easy. There are 2 possibilities:
- Creating an installationfile using the Projecttype "CAB-Project for Smart Devices"
- Creating the file manually using CabWiz.exe
(Both possibilities are explained in detail in chapter 16 in Programmieren mit dem .NET Compact Framework[german only])
But there is an additional possibility: WinCE CAB Manager von OCP Software.
Using this software doesn't only make it really easy creating a CAB file by Wizard, but also presents a possibility in editing a created CAB file, exporting it and many more.
According the editing possibilities it is possible to alter the registry settings as well. Native developers kann additionally add their custom Setup.DLL.
In my opinion a really usefull tool, which is it's 99$ worth.
Das IPhone übt momentan einigen Einfluss auf die Windows Mobile UI aus: Kaum ein Tag vergeht, ohne das neue Skins, Tools oder sonstige Erweiterungen erscheinen. Eine solche Erweiterung ist die PocketCM Tastatur. Diese bietet neben einer verbesserten Texteingabe auch ein Skinsupport, für welches sich ein IPhone Skin in den Form findet.
Mehr zu diesem Thema hier.
- Englische Version -
The IPhone actually has some influence on the Windows Mobile UI: Nearly no day passes without new Skins, tools or other enhancements being released. One of those enhacements is the PocketCM keyboard. This keyboard offers an improved textinput and skinning support as well, where an IPhone skin can be found on the forums.
More on this topic can be found here.
Satter Ramblings zeigt in seinem Blog, wie man unter Zuhilfenahme einer Bibliothek, mit dem IPhone vom Desktop aus kommunizieren kann.
Lesen Sie den ganzen Beitrag hier.
- English version -
Satter Ramblings shows in his Blog, how to communicate with an IPhone from the Desktop by using an additional library.
Read the full post here.
Für das .NET CF 3.5 CTP sind nun auch die ersten Powertoys in englischer Sprache als CTP erschienen. Enthalten hierdrin sind folgende Tools:
- Remote Performance Monitor and GC Heap Viewer
- NETCF CLR Profiler
- App Configuration Tool (NetCFcfg.exe)
- NETCF ServiceModel Metadata Tool
- Remote Logging Configuration Tool
- NETCF Network Log Viewer
Das interessanteste daran ist in meinen Augen das NETCF ServiceModel Metadata Tool, oder kurz: NETCFSvcUtil.exe. Mit der mobilen Variante der SvcUtil.exe lassen sich Proxys für einen WCF Dienst umso leichter erstellen. Andrew Arnott zeigt in seinem Blogeintrag, wie sich dieses Utility verwenden lässt.
Alle weiteren ebenfalls interessanten Tools sind auf der Downloadseite der Powertoys zu finden. Auch die bekannten Fehler sind dort bereits gelistet.
Für eine detailliertere Übersicht der enthaltenen Tools empfahle ich Fabien's Post zu diesem Thema: http://fabdecret.blogspot.com/2007/09/cf-35-debug-tools.html
- English version -
The first Powertoys for the .NET CF 3.5 CTP have been actually released.. Included you will find the following Tools:
- Remote Performance Monitor and GC Heap Viewer
- NETCF CLR Profiler
- App Configuration Tool (NetCFcfg.exe)
- NETCF ServiceModel Metadata Tool
- Remote Logging Configuration Tool
- NETCF Network Log Viewer
The most interesting tool in this package is in my eyes the NETCF ServiceModel Metadata Tool, oder in short: NETCFSvcUtil.exe. WIth the mobile variant of the SvcUtil.exe Proxys for WCF Services can be created easier. Andrew Arnott shows in his Blogpost, how this Utility can be used.
All other interesting Tools are described on the Powertoys Downloadpage. Even known issues are listed there as well.
For an in-depth view on the tools I recommend reading Fabien's post: Für eine detailliertere Übersicht der enthaltenen Tools empfahle ich Fabien's Post zu diesem Thema: http://fabdecret.blogspot.com/2007/09/cf-35-debug-tools.html
Frank Prengel beschreibt in seinem Blog, wie man in Windows Live Mobile unter Windows Mobile 6 seinen kostenlosen Hotmail Account mittels Push E-Mail abfragen kann. Naja, eigentlich ist das ja ein zeitgesteuerter Pull, aber was solls - Marketing ist alles, oder? 
Den Post mit Anleitung findet ihr hier.
- English Version -
Frank Prengel shows in his blog, how Windows Live Mobile on Windows Mobile 6 can be used for push e-mail in conjunction with the free Hotmail service. Well, it is more or less a timed pull, but anyway - Marketing to the masses. 
The post wioth guideline included can be found here.
Nachdem es ein wenig ruhiger bzgl. neuer Artikel geworden ist, ist nun also wieder ein neuer Artikel erschienen. Thema: SharePoint "richtig" mobil - Nutzen der SharePoint API für mobile Anwendungen. Wie lassen sich Windows Mobile Geräte und das .NET Compact Framework näher bringen?
Zu lesen ist der Artikel in der Visual Studio One, Ausgabe 05/2007.
- English version -
After it got a bit quite around new published articles, it was time to publish a new one. Topic: Sharepoint "richtig mobil - Nutzen der SharePoint API für mobile Anwendungen ( SharePoint "correctly mobile - Using the SharePoint API for mobile applications). How can SharePoint and the .NET Compact Framework be brought together?
The article can be read in the Visual Studio One,magazine, issue 05/2007.
Die Coding Competition ist erst wenige Tage alt, schon ist das erste Projekt bereits eingereicht. Malcolm Hall hat sein FlowFX Projekt eingereicht, welches Animationseffekte beim Wechsel ziwschen Forms erlaubt. Hierzu hat er auch noch ein kleines Video zur Verfügung gestellt:
Der Sourcecode soll nach der Competition wieder zur weiteren Verwendung zur Verfügung stehen.
Mehr zu FlowFX erfahren Sie hier.
-English version-
The Coding Competition is just a few days old, but the first impressive project has already been uploaded. Malcolm Hall posted his FlowFX project, which animation effect are for changing forms.. Also he has already a small video on this (see above).
The Sourcecode shall be available again after the competition.
More Information on FlowFX here.
Die Entwickler um das SmartDeviceFramework hat eine neue Communityseite gestartet. Auf dieser sollen neben Whitepapers und weiteren interessanten Themen auch monatlich Coding Wettbewerbe für mobile Entwickler stattfinden. Diesen Monat (September) geht es um das Thema UI (mehr hier). Zusätzlich gibt es auch die Möglichkeit eigene Open Source Projekte, ähnlich wie bei CodePlex, zu hosten (mehr dazu hier). Zusätzlich werden die OpenNETCF Foren ebenfalls auf die neue Site migriert. Mehr zu diesem Thema in Neils Post.
Gestern hat die englische Dokumentation des Windows Mobile 6 SDK eine kleine Auffrischung erfahren:
Managing Windows Mobile Powered Devices
Dieser große Bereich beschreibt das "Provisioning" von WIndows Mobile Geräten via XML Dateien. Dies bedeutet, daß man low-level Einstellungen (sofern vom Gerät erlaubt, Stichwort: Gerätesicherheit ) mittel der Funktion "DMProcessConfigXML" vornehmen, oder aber auch abrufen kann.
Programming Techniques for Windows Mobile
Dieser Bereich wurde um 2 wichtige Themen erweitert:
Making use of Device-Specific Features Dieser kurze Bereich bietet eine Einführung zur Nutzung des Provisioning Tools und dem "State and Notification Broker" (SNAPI).
Writing Applications that Access Databases Ein anderer kurzer Bereich widmet sich der Einführung und Verwendung von Datenbanken in seinen Anwendungen.
Auch, wenn man lediglich "nur" für Windows Mobile 5 entwickelt, so lohnt sich der Download ebenfalls, da viele der beschriebenen Themen auch auf Windows Mobile 5 zutrifft.
Das Update kann hier heruntergeladen werden.
Auf dem .NET Summer Camp 2007 werde ich diesem Mal ebenfalls mit einer Session zum Thema Mobility vertreten sein: 26.09.2007: - 15:55 Uhr - Visual Studio 2008 / .NET Compact Framework 3.5
Die Veranstaltung findet in Leipzig statt und ich freue mich bereits riesig darauf mal wieder vor Publikum zu sprechen. Mehr Informationen zur Veranstaltung gibt es hier.
Hach, es ist einfach herrlich mit dem .NET Compact Framework zu arbeiten. Zugegeben, es ist manchmal müssig, da man nicht den Komfort genießt, den Programmierer mit dem .NET Framework zu Teil wird. Dafür, so finde ich, ist man viel näher an der Materie, wenn sich das eine oder andere selbst erstellen muss. Man kann so viel tiefer in die Materie eindringen.
Doch dies hat auch seine Schattenseiten, denn wenn man schon bei seinen Möglichkeiten eingeschränkt ist, so sollte man auch erwarten, daß zumindest diese Einschränkungen unterstützt werden. So mag ich einfach nicht verstehen wollen, warum die im .NET 2.0 vorhandene Komprimierung nicht auch vom .NET Compact Framework unterstützt wird. Dabei unterstützt doch gerade das HTTP Protokoll in der Version 1.1 bereits die Komprimierung vom Protokoll her.
Gerade bei mobiler Datenkommunikation wäre es doch sinnvoll, insbesondere wenn es um Geschäftsanwendungen geht, Daten zu reduzieren:
- Mobile Geräte besitzen meist nur (sofern keine weiteren Speicherkarten verwendet werden) einige wenige MB an freiem Arbeitsspeicher
- Daten werden meist immer noch mittels schmalbandiger und nicht unbedingt günstiger GPRS-Verbindung ausgetauscht. Bei einigen MB an Daten kann es sich bereits daher schon lohnen eine Kompression einzusetzen.
Die genaue Kompressionsrate bei einem ZIP-Algorithmus lässt sich nicht genau definieren. Dies ist von den zu komprimierenden Daten abhängig. Generell lässt sich jedoch sagen, daß eine Kompression von ca. 50% - 60% real ist.
Natürlich muss man dabei auch in Kauf nehmen, daß durch Komprimierung die Performance einer Anwendung leidet, da der Prozess zur Komprimierung und Dekomprimierung ziemlich speicher- und prozessorintensiv ist.
Somit wird ein komprimierter Datenaustausch zwischen mobilen Client und Server nicht wirklich schneller, da die gewonnene Zeit hierbei für durch die Kompression/Dekompression verloren geht. Man spart jedoch Speicherplatz und ggfs. ein wenig Geld.
Nachfolgend wird daher dargestellt, wie sich diese fehlende Funktionalität nachrüsten lässt.
Teil 1: Der Server
Zu allererst ist es nötig dem Webanwendung / dem WebService die Komprimierung "beizubringen", respektive die Komprimierung im Webserver für aspx, asmx und Co zu aktivieren. Dabei wird der ASP.NET Development Server ausser acht gelassen, da dieser für das hier beschrieben Szenario ungeeignet ist. Dieser unterstützt nämlich keinen Zugriff "von aussen" und kann daher nur Anfragen von localhost verarbeiten, was bei der mobilen Entwicklung leider nicht weiterhilft.
Möglichkeit 1: IIS 6 Komprimierung aktivieren.
Dieser englischsprachige Artikel beschreibt, wie die bereits im IIS 6 vorhandene Komprimierung für dynamische Inhalte (aspx, asmx und asp) aktiviert werden kann. Vorteil: Alle auf dem Server befindlichen Webanwendungen und -dienste können von der Komprimierung profitieren. Werden jedoch einige dieser Webdienste von .NET Compact Framework Anwendungen verwendet, die diese Komprimierung nicht verstehen, kann dies u.U. böse Folgen nach sich ziehen. Nachteil: Man benötigt einen entsprechenden Remotezugriff auf den Server, um diese Einstellung ermöglichen zu können. Weiterhin sollte man mit der Materie schon ein wenig vertraut sein.
Möglichkeit 2: anwendungsbasierte Komprimierung
Neben der zuvor beschriebenen Möglichkeit ist es auch möglich, lediglich für die entsprechende Webanwendung / den entsprechenden WebService eine Komprimierung zu verwenden. Vorteil: Es sind keine Modifikationen an der Serveranwendung nötig, d.h. sie braucht nicht erneut kompiliert zu werden. Es reichen einfach einige Konfigurationsänderungen an der web.config und ein paar zusätzliche DLLs. Ein weiterer Vorteil ist, daß alle anderen Webanwendungen / WebServices auf dem gleichen Webserver hiervon unberührt bleiben.
Um dies zu ermöglichen verwenden Sie bspw. das HttpCompressionModule von blowery.org. Sie erhalten es dort sowohl für ASP.NET 2.0, als auch für ASP.NET 1.1 jeweils als Sourcecode, oder als bereits vorkompilierte Bibliotheken. Dabei gilt zu beachten, daß unter ASP.NET 2.0 System.IO.Compression zur Komprimierung verwendet wird, während unter ASP.NET 1.1 die Kompressionsbibliothek SharpZipLib verwendet wird. Hierzu jedoch später mehr.
Das HttpCompressionModule agiert als so genanntes HTTP Modul. Dieses verändert Daten entweder beim Empfang oder jedoch beim Versenden. In unserem Fall geschieht dies beim Versenden. Hierzu wird das unterstützte Encoding beim Empfang ermittelt, und, sofern der GZip- oder Deflate-Komprimierungsalgorithmus vom Client unterstützt wird, die Antwort vor dem Versenden an den Client noch mal durch einen Filter (also dem HTTP Modul) komprimiert.
Um HttpCompressionModule in Ihrer Webanwendung zu nutzen, entpacken Sie bitte folgende Dateien in das bin-Verzeichnis der Webanwendung / des WebServices aus dem heruntergeladenen Archiv:
- blowery.Web.HttpCompress.dll
- blowery.Web.HttpCompress.xml
- ICSharpCode.SharpZipLib.dll
- ICSharpCode.SharpZipLib.xml
Diese Dateien befinden sich im Verzeichnis "Example\bin" des genannten Archivs.
Danach editieren Sie bitte die web.config der Webanwendung / des WebServices um folgende Einträge:
- Im Abschnitt <configuration> fügen Sie bitte den folgenden Inhalt hinzu:
<!-- This chunk sets up the configuration section handler for blowery.webmodules/ --> <configSections> <sectionGroup name="blowery.web"> <section name="httpCompress" type="blowery.Web.HttpCompress.SectionHandler, blowery.Web.HttpCompress"/> </sectionGroup> </configSections> <!-- config section for my http module --> <blowery.web> <!-- ...Here's an example on how to change the algorithm or compressionlevel... <compressionModule preferredAlgorithm="deflate|gzip" compressionLevel="high|normal|low"/> ...so, to use deflate by default, and high compression, you have to set the following line ...--> <httpCompress preferredAlgorithm="gzip" compressionLevel="high"> <excludedMimeTypes> <add type="image/jpeg"/> <add type="image/gif"/> </excludedMimeTypes> <excludedPaths> <add path="NoCompress.aspx"/> </excludedPaths> </httpCompress> </blowery.web>
- Im Abschnitt <system.web> fügen Sie bitte noch folgendes hinzu:
<httpModules> <add name="CompressionModule" type="blowery.Web.HttpCompress.HttpModule, blowery.web.HttpCompress"/> </httpModules>
Ggfs. ist noch ein Neustart des Webservers nötig, den Sie beispielsweise leicht mittels auf der Kommandozeile ausgeführten Kommando "iisreset" durchführen können.
Der erste dargestellte Abschnitt beschreibt die sectionGroup, welche von HTTPCompress verwendet wird. In dieser Sektion ("<blowery.web>") werden die Konfigurationseinstellungen für die Komprimierung definiert. Dabei ist sowohl der Komprimierungsalgorithmus (gzip oder deflate), als auch die Komprimierungsstärke (high, normal oder low) verwendbar.
Der zweite Konfigurationsabschnitt in "<system.web>" macht ASP.NET gegenüber dieses HTTP Modul bekannt, so daß es verwendet werden kann.
Teil 2: Testen der serverseitigen Komprimierung
Wenn Sie testen möchten, ob Ihr Daten nun korrekterweise komprimiert versendet werden, verwenden Sie doch einfach das kostenfreie und erweiterbare Microsoft Tool Fiddler. Bei diesem Tool handelt es sich um einen HTTP Proxy (auch HTTP Debugging Proxy genannt), welcher sehr häufig von Webentwicklern eingesetzt wird. HTTP Proxy bedeutet in diesem Fall, das die über diesen Dienst durchgeschleust und aufgezeichnet wird. Dieser HTTP Proxy wird in den Proxyeinstellungen des lokalem Webbrowsers eingetragen. War hier zuvor bereits ein Proxy eingetragen, so wird diese vom HTTP Proxy übernommen, so daß die Kommunikation weiter wie gewohnt erfolgt.
Dieser HTTP Proxy ist jedoch nicht nur auf den Webbrowser beschränkt. Werden die Einstellungen in andere proxyfähige Anwendungen eingetragen, so kann diese Kommunikation mit aufgezeichnet werden.
Für .NET Anwendungen ist dies im Regelfall nicht nötig, da diese die Einstellungen des Internet Explorers übernehmen, wenn nicht anders definiert.
Fiddler ist jedoch nicht nur auf lokale HTTP Einstellungen beschränkt. Dies ist nur die Standardeinstellung. Durch eine Option kann dieser Proxy auch vom Netzwerk aus angesprochen werden. Somit ist es dann bspw. möglich Anfragen von Windows Mobile Anwendung mit zu protokollieren.
Um die HTTP-Kommunikation vom Windows Mobile Gerät über den Proxy zu aktivieren, muss dieser auch in Windows Mobile eingestellt werden und Fiddler hierzu ausgeführt werden. Wird Fiddler nicht ausgeführt, so kommt es zu Fehlern in Ihrer mobilen Anwendung. Hierzu aktivieren Sie bitte den Punkt Verbindungen unter Start->Einstellungen auf dem Karteireiter Verbindungen. Wählen Sie dort dann unter dem Punkt Firmennetzwerk den Eintrag Proxyserver einrichten. Ist bereits ein Proxy eingetragen, so wählen Sie stattdessen Proxyserver bearbeiten aus. Aktivieren Sie dann beide dargestellten Häckchen. Unter Proxyserver tragen Sie die IP-Adresse des Computers ein, auf welchem Fiddler ausgeführt wird (Beispiel: 192.168.0.5). Wählen Sie danach die Schaltfläche Erweitert... aus. Aktivieren Sie nun im neu erscheinenden Dialog den Eintrag beginnend mit HTTP. Tragen Sie im erscheinenden Dialog im Punkt Anschluss die Portadresse von Fiddler ein. Der Standardwert ist normalerweise 8888.
Wenn Sie dieses Tool installiert haben und es aufrufen, wird normalerweise die HTTP Kommunikation bereits mitprotokolliert. Alternativ können Sie die Protokollierung mittels "F12" aktivieren/deaktivieren.
Rufen Sie in Ihrem Webbrowser die gewünschte ASMX-Seite / ASPX Seite auf, So sehen Sie bei einem Doppelklick auf den entsprechenden Eintrag bereits, ob die Antworten des Webservers komprimiert werden.
(Kommunikation ist nicht komprimiert)
(Kommunikation ist komprimiert)
Darüber hinaus können Sie sich in den entsprechenden Karteireitern die Daten ansehen, welche ausgetauscht werden. Sollten diese komprimiert sein, so kann Fiddler diese auch dekomprimiert darstellen.
Teil 3: Der Client
Der nachfolgend beschriebene Teil basiert auf einem englischsprachigen Artikel der Flow Group, hat aber im Gegensatz dazu einige Vorteile:
- Anstatt ein Pseudoprotokoll zu verwenden (zHttp), wird hier das reguläre Http Protokoll verwendet. Vorteil hierbei ist, daß in der zur verwendenden Anwendung keine Modifikationen nötig sind und weiterhin das Http Protokoll funktional weiterverwendet werden kann. Es wird lediglich eine Zeile Code in der Anwendung selbst benötigt.
- Es wurde darauf wert gelegt, daß die Implementation hierbei eher dem Designguide des WebRequest folgt.
Bevor wir jedoch hierzu kommen fangen wir lieber von Vorne an.
Um eine Komprimierung zu ermöglichen benötigt man Klassen oder eine Bibliothek, welche diese Aufgaben übernimmt. Hierfür gibt es lediglich 2 Möglichkeiten: SharpZipLib und zlibCE von OpenNETCF. Welche Bibliothek Sie letztlich verwenden, bleibt Ihnen überlassen. Ich habe mich für die SharpZipLib Bibliothek entschieden. Dies hat einige Gründe:
- zlibCE ist nativ entwickelt worden und bietet zusätzlich einen Wrapper für das .NET Compact Framework, während die SharpZipLib komplett in C# erstellt worden ist. Dabei gilt jedoch zu beachten, daß zlibCE vermutlich schneller ist (Dies werde ich zu einem späteren Zeitpunkt testen).
- SharpZipLib ist neuerdings direkt für das .NET Compact Framework vorhanden
- zlibCE ist noch ziemlich neu, während SharpZipLib sich bereits bewährt hat.
- SharpZipLib unterstützt den Zip- und Deflate-Algorithmus und besitzt dazu noch einige weitere Funktionen. zlibCE unterstützt lediglich den Zip-Algorithmus.
Nachdem nun also bereits eine Komprimierungsbibliothek vorhanden ist, gilt es diese zu implementieren. Wie die Komprimierungsbibliothek für diesen Zweck zu verwenden ist, erfahren Sie im folgenden Abschnitt.
Das folgende Schaubild zeigt die Abhängigkeiten von SoapHttpClientProtocol, WebRequest und WebResponse, aus denen u.a. eine WebService-Referenz besteht.
Wie Sie sehen, verwendet die abstrakte Klasse SoapHttpClientProtocol intern die Klassen WebRequest und WebResponse (leider nicht im Schaubild darstellbar). Da die komprimierten Daten mittels der Methode GetResponseStream() der Klasse WebResponse zurückgegeben werden ist es sinnvoll an dieser Stelle anzusetzen. Somit gilt es also eine Proxyklasse für die Klasse WebResponse zu erstellen und die Methode GetResponseStream() zu überschreiben. Damit diese Methode jedoch auch den dekomprimierten Stream zurückgibt ist es dementsprechend nötig auch die Klasse WebRequest zu überschreiben. Diese liefert nämlich mittels GetResponse ein Objekt der Instanz WebResponse zurück.
Die Klasse CompressedHTTPWebResponse leitet somit von der abstrakten Klasse WebResponse ab.
Sie erhält zusätzlich eine Variable vom Typ HttpWebResponse, da unsere Klasse als eine Schale hierfür dienen soll. HttpWebRequest ist hierbei der Handler für HTTP Anfragen aus dem .NET (Compact) Framework heraus.
Wir wollen ja eigentlich auch nur die Methode GetResponseStream() überschreiben. Intern wird jedoch alles weitere auf die intern verwendete Variable response vom Typ HttpWebResponse weitergeleitet.
Damit in der überschriebenen Methode auch die Komprimierung verwendet werden kann, muss dem Projekt die Assembly ICSharpCode.SharpZipLib.dll hinzugefügt werden. Sie finden diese im heruntergeladenen Archiv von SharpZipLib im Ordner "SharpZipLib_0852_BinDoc\current\netcf-20".
Zusätzlich benötigen sie die beiden using Statements using ICSharpCode.SharpZipLib.GZip; und using ICSharpCode.SharpZipLib.Zip.Compression.Streams; , damit Sie die Klassen zur Komprimierung einfacher in Ihrer Klasse verwenden können.
Bevor Sie die Dekomprimierung verwenden, prüfen Sie auf das ContentEncoding des verwendeten Objektes response. Hier ist die Information enthalten, ob die erhaltenen Daten komprimiert sind, respektive, wie diese komprimiert wurden. Wird keine Komprimierung verwendet, so wird der ResponseStream von response einfach 1:1 zurückgegeben und ermöglicht so die Klasse als Standardklasse für HTTP-Kommunikation anstatt HttpWebRequest zu verwenden. Wird die GZip-Komprimierung durch den Webserver verwendet (ContentEncoding == "gzip"), so wird um den ResponseStream noch der GZipInputStream gelegt, welcher die Daten beim Abfragen direkt dekomprimiert. Analog geschieht dies beim Deflate-Algorithmus (ContentEncoding == "deflate") mit dem InflaterInputStream.
Wie bereits beschrieben ist für die korrekte Verwendung von CompressedHTTPWebResponse auch analog eine Ableitung der Klasse WebRequest nötig.
Hier sehen Sie, daß analog zu CompressedHTTPWebResponse auch diese Klasse eine Schale (Proxyklasse) für HttpWebRequest darstellt. Hier wird daher ebenfalls ein Objekt vom Typ HttpWebRequest erstellt, an welches alle Anfragen weitergeleitet werden (die hier dargestellte Klasse ist lediglich die Minimalimplementation. Das im Anhang beigefügte Archiv ist eine Vollimplementation).
Damit man also komprimierte Daten anfordern kann ist es nötig dem verwendeten HttpWebRequest einen Header beizufügen, der dem Webserver gegenüber erklärt, daß die Komprimierung unterstützt wird.
Um jedoch auch die CompressedHTTPWebResponse zu erhalten, ist es nötig die Methode GetResponse() zu überschreiben.
Die statische Methode Create erzeugt konform zum WebRequest jeweils ein Objekt vom Typ CompressedHTTPWebRequest und gibt diesen zurück.
Mit diesen beiden Klassen ist es bereits möglich Daten mittels HTTP Kommunikation auszutauschen. Das folgende Beispiel zeigt, wie dies geht.
Teil 3.1: Abfragen komprimierter Daten mittels CompressedHTTPWebRequest
Wenn Sie die Methode CompressedHTTPWebResponse debuggen, werden Sie sehen, daß die Seite mit komprimierten Daten geantwortet hat.
Was noch als letztes fehlt ist die Verwendung dieser Klassen innerhalb der WebService-Referenz.
Teil 3.2: komprimierte Datenkommunikation mit WebServices
Wie ist es nun aber möglich WebService-Referenz, bzw. der Klasse SoapHttpClientProtocol beizubringen, die neuen Klassen CompressedHTTPWebRequest und CompressedHTTPWebResponse intern zu verwenden. Sie leiten ja von WebRequest und WebResponse ab. Also sollte dies möglich sein.
Nun könnte man ja auf die Idee kommen und die Klasse SoapHttpClientProtocol zu überschreiben. Dies wäre jedoch viel zu aufwändig und ist auch gar nicht nötig.
Viel sinnvoller wäre es doch, genauso wie bereits beim HTTP-Handler auf der Serverseite den HTTP-Handler für die komprimierten Daten auf der Clientseite zu verwenden. Hierzu müsste lediglich der Standardhandler für HTTP deregistriert und unser Handler registriert werden.
Dies geschieht mittels der Codezeile CompressedHttpProtocol.Register();.Dies ist die einzige Zeile (ich sprach bereits am Anfang des Artikels davon), welcher der Clientanwendung hinzugefügt werden muss. Hierdurch wird der "neue" HTTP-Handler registriert und wird für die Laufzeit der Anwendung verwendet.
Einziges Problem hierbei ist, daß dieser Handler sich nicht deregistrieren lässt. Dies ist jedoch auch nicht nötig, da unser Handler ebenfalls unkomprimierte Daten verarbeiten kann.
Achtung: Es gilt zu beachten, daß die eben beschriebene Codezeile VOR der Verwendung eines WebServices aufgerufen wird.
Hinter dieser Codezeile verstecken sich 2 kleine Klassen.
Bei dieser Klasse handelt es sich um eine kleine Hilfsklasse. Die Methode Register() registriert den CompressedHTTPWebRequest mit einer weiteren Hilfsmethode, welche im folgenden beschrieben wird, als Handler für die HTTP Kommunikation. Alle Anfragen, welche das Prefix "http" verwenden, werden also durch unsere neuen Klassen verarbeitet. Dies ist generell sinnvoll, da, wie bereits beschrieben, auch unkomprimierte HTTP Kommunikation verarbeiten können.
Die Hilfsklasse CompressedHTTPWebRequestCreate sieht, wie folgt aus:
.
Diese Klasse leitet vom Interface IWebRequestCreate ab, welches für die Registrierung eines Handlers benötigt wird und beim Aufruf jeweils die korrekten WebRequest und WebResponse Klassen verwendet.
Wenn Sie nun, wie gewohnt Ihren Webverweis und die eben erstellte Bibliothek Ihrem Projekt hinzufügen und den clientseitigen HTTP-Handler wie eben gezeigt registrieren, können Sie wie gewohnt Ihre Anwendungen weiter entwickeln und zusätzlich Zeit Platz und Geld sparen.
Fazit
Eigentlich nicht viel Aufwand, jedoch eine Menge "Benefit". Microsoft, bitte baut dies doch direkt in das .NET Compact Framework 3.5 ein. Ihr erspart vielen Personen eine Menge Ärger.
Die Bibliothek lässt sich natürlich noch erweitern. So liesse sich, mit entsprechend erstellten Bibliotheken die Komprimierung auch noch verschlüsseln. Dies könnte ebenfalls mit einem HTTP-Händler durchgeführt werden. Hiermit wäre das einfache Abhören der Kommunikation zuerst einmal unterbunden.
Link: Bibliothek als Source und Binary NetCompressionLibrary.zip (226,15 KB)
This posting is provided "AS IS" with no warranties, and confers no rights.
Keider ist dieser "Post" mehrfach aus dem Blogsystem "verschwunden". Daher sei er hier nochmals aufgeführt.
Aus der MSDN Reihe "Gewusst wie", oder wie sie im englischen heißt "How do I", gibt es nun einige Videos zum Thema Mobility.
In den 10 - 20 minütigen Videos werden kleinere Hilfestellungen für den Arbeitsalltag eines .NET Entwicklers gegeben.
Das schöne an den Videos ist, daß man sie in diversen (mobilen) Formaten neben WMV erhält (bspw.: 3GP). Alternativ gibt es auch nur die Tonspuren als MP3 und Co.
Die ersten beiden englischsprachigen Videos von Jim Wilson sind bereits online:
Doch weitere Themen sind geplant und sollen im Abstand von einer Woche erscheinen.
Bisher geplant:
- Configuring the Device Emulator to use the Cellular Emulator
- Automatically start an app when the device wakes up
- Create an application CAB file that automatically installs .NET CF
- Setup and use the Remote Performance Manager
- Make a merge replication publication available to remote devices
Link: http://msdn2.microsoft.com/de-de/netframework/bb495180.aspx
Mit dem Windows Mobile 5 hat auch das Thema Sicherheit Einzug gehalten. So lassen sich, je nach Einstellung, möglicherweise nur Anwendungen ausführen, wenn diese digital signiert sind. Hierzu muss aber ggfs. das zugehörige Zertifikat installiert sein. Wie ruft man priviligierte Windows Mobile Funktionen auf? Wie lassen sich diese Einstellungen ändern...? Sie sehen, zu diesem Thema gibt es viele Fragen. Antworten zu diesem Thema gibt der Artikel Step by Step: Understanding Windows Mobile Security Using the Device Security Manager. Dieser zeigt, welche Einstellungen u.a. mit dem Device Security Manager verändert werden können und welche zusätzlichen Helferlein in dieser Anwendung vorhanden sind. Alle vorhandenen Optionen der Anwendungen und das zugehörige Hintergrundwissen werden hierbei vermittelt. Da der Device Security Manager in Visual Studio "Orcas" enthalten sein wird, ist der Artikel umso interessanter.
Wenn man sich im mobilen Umfeld bewegt, so bleibt es nicht aus, daß man sich auch um die Serverseite kümmern muss. Hierzu gehört auch, daß dort ab und an aus übermittelten Daten Rechnungen erstellt werden und per Mail versendet werden müssen. Als Format hierzu eignet sich hierfür PDF. Wie Sie mit Hilfe der freien Bibliothek iTextSharp dies dynamisch machen können zeigen Simon Hackfort und ich in der aktuellen Ausgabe 6.2007 des dotnet Magazins in unserem Artikel "PDF Dokumente unter .NET erstellen".
Auch in diesem Monat ist ein neuer Artikel von mir erschienen. Diesmal wird das Thema .NET MicroFramework näher beleuchtet: Was bringt es? Wem nutzt es und vor allem: Was kann es?
Zu lesen ist der Artikel in der Visual Studio One, Ausgabe 03/2007.

Torsten und ich werden, durch Leitung von Bernd Marquardt, einiges rund um das Thema "Mobility" im o.g. Webcast zum Besten geben. Zusätzlich bietet sich dabei auch einige Inhalte unseres aktuellen Buches vorzustellen.
Weitere Informationen und Anmeldung zum Webcast: Hier.
Das Windows Mobile Team hat hier eine englischsprachige FAQ zum Thema "Verschlüsselung der Speicherkarte" veröffentlicht.
|