30 May 2007

Windows Mobile Security follow-up...

Si vous désirez compléter l'article sur la sécurité sous Windows Mobile5.0 et 6, voici deux liens très intéressants.
If you wish to complete the article on security under Windows Mobile5.0 and 6, here are two very interesting links.
  • Security Considerations for Windows Mobile Messaging in the Enterprise
- Prise en compte de la sécurité sur le périphérique sous WM
- Prise en compte de la sécurité sur le réseau d'entreprise (ActiveSync protocole, Exchange Server)
- Prise en compte de la sécurité sur les réseaux (ISA Server, Internet Information Services server)
- Security Considerations on the Device
- Security Considerations within the Corporate Network (ActiveSync protocol , Exchange Server)
- Security Considerations on the Network (ISA Server, Internet Information Services server)
http://www.microsoft.com/technet/solutionaccelerators/mobile/maintain/SecEntMessaging/d592e80a-035e-4291-b05d-c8b8dae71b80.mspx?mfr=true

  • Security Model for Windows Mobile 5.0 and Windows Mobile 6
- Architecture de la sécurité sous Windows Mobile
- Windows Mobile Security Architecture
http://www.microsoft.com/technet/solutionaccelerators/mobile/maintain/SecModel/aff7cf7f-0e11-4ef4-8626-f33bd969b35a.mspx?mfr=true

17 May 2007

Find a Window Handle

Une question fréquemment posée sur les newsgroups Windows Mobile : Comment trouver le handle d'une fenêtre?
A frequently asked question on WM newsgroup : How to find a Window Handle?

Cela peut être utile, si vous avez besoin:
- appeler une fonction native de l'API Windows avec un handle de fenêtre en paramètre (SetForeGroundWindow, ShowWindow...)
- envoyer un message Window à une fenêtre Window (WM_ACTIVATE, WM_CLOSE)
- interagir avec des fenêtre système comme la barre des tâches ou le SIP

That can be used, if you need:
- to call a native Windows API function with a window handle in parameter (SetForeGroundWindow, ShowWindow...)
- to send window message to an other window (WM_ACTIVATE, WM_CLOSE)
- to interact with a system window like the taskbar or the SIP

La fonction FindWindow a les paramètres suivants:
The FindWindow function has the following paramters:
HWND FindWindow(LPCTSTR lpClassName,
LPCTSTR lpWindowName);

Pour l'importer en C#:
To import in C#:
[DllImport("coredll.dll", EntryPoint="FindWindow")] public static extern int FindWindow(string lpClassName, string lpWindowName);
Pour vous aider à identifier les paramètres, un outil très interessant est disponible : Windows CE Remote Spy. Il permet de lister toutes les fenêtres du système et ensuite, vous pouvez identifier les deux paramètres nécessaires. Les deux copies d'écran montrent des exemples:

To help you to identify these parameters, there is a very interesting utility : Windows CE Remote Spy. It lists all the windows of the system and then, you can identify the two needed parameters. The two screenshots show examples:
1) Pour une application C# nommée WM6Test, vous devez appeler :
for a C# application named WM6Test, you must call
int h = FindWindow("#NETCF_AGL_BASE_", "WM6TEst");
2) Pour la barre des tâches:
for the taskbar:
int h = FindWindow("HHTaskBar", "");

J'espère que cela vous aidera, postez vos commentaires...

Hope this help you, post comments...

13 May 2007

GPS Test Utility (FakeGPS)

Un nouvel utilitaire de test GPS (Global Position System), FakeGPS, vous permet de tester vos applications de localisation accès à un périphérique GPS. Le SDK Windows Mobile 6 Refresh fournit des exemples d'utilisation qui fonctionnent directement avec GPS Intermediate Driver, vous pouvez l'utiliser pour tester vos applications sur les périphériques réels et Device Emulator sans devoir modifier votre programme.

A new Global Position System (GPS) test utility, FakeGPS, allows you to test your location-enabled applications without needing access to a GPS device. The SDK Windows Mobile 6 Refresh provides examples which work directly with the GPS Intermediate Driver, you can use it to test your applications on both real devices and the Device Emulator without making any modifications to your program.




  1. Installer l'application FakeGPS sur l'émulateur PPC (fichier CAB)
    C:\Program Files\Windows Mobile 6 SDK\Tools\GPS

  2. Lancer l'application FakeGPS avec un simple fichier de texte contenant une liste de messages GPS NMEA, un exemple est fourni : fakegpsdata.txt

  3. Lancer l'application d'exemple d'utilisation depuis VS2005 : le projet GPSSample
    C:\Program Files\Windows Mobile 6 SDK\Samples\PocketPC\CS\GPS



  1. Install FakeGPS on the emulator PPC (CAB file)
    C:\Program Files\Windows Mobile 6 SDK\Tools\GPS

  2. Launch the application FakeGPS with a simple text file containing a list of GPS NMEA messages, an example is provided : fakegpsdata.txt

  3. Launch the example code from VS2005 : the projet GPSSample
    C:\Program Files\Windows Mobile 6 SDK\Samples\PocketPC\CS\GPS

Dans le projet GPSSample, la référence Microsoft.WindowsMobile.Samples.Location a été ajoutée.
In GPSSample Project, the Microsoft.WindowsMobile.Samples.Location reference is added.

Ensuite, les objets Gps, GpsPosition, GpsDeviceState sont créés :
Then, the objects Gps, GpsPosition, GpsDeviceState are created :
Gps gps = new Gps();
GpsPosition position = null;
GpsDeviceState device = null;
gps.Open();


Vous avez la possibilité d'accrocher deux évènements à l'objet gps:

  • gps.DeviceStateChanged :
    évènement qui apparaît quand l'état du service GPS change.

  • gps.LocationChanged :
    évènement qui apparaît quand les coordonnées du GPS changent, on peut obtenir la latitude et la longitude des nouvelles coordonnées .

You have the possibility of adding two events to your gps object:

  • gps.DeviceStateChanged :
    event appears when service state or device state changes.

  • gps.LocationChanged:
    event appears when the location changes, it gives latitude and longitude of the new position.

Pour des informations complémentaires, tous les source codes sont disponibles dans les exemples avec le SDK WM6.
For details, all source codes are available in the WM6 SDK.

http://www.microsoft.com/downloads/details.aspx?FamilyID=06111a3a-a651-4745-88ef-3d48091a390b&DisplayLang=en

12 May 2007

Non Full Screen Window


Voici comment créer une fenêtre Modale sous Windows Mobile qui n'est pas en mode plein écran. Tout d'abord, ajouter une Form à votre projet avec les propriétés suivantes :



Here is an example on how to create a modal non full screen window. First of all add a Form to your project with the following properties:





Choisissez la position et la taille de la fenêtre que vous désirez. Puis créer et montrer votre Form :

Set the Location and the window size you want, Then, create and show your Form :

NonFullScreenForm myNonFullScreenForm = new NonFullScreenForm();
myNonFullScreenForm .ShowDialog();

Ensuite, vous pouvez tracer un rectangle autour de la fenêtre en surchargeant la méthode OnPaint :
Then, you can draw a rectangle around the Form while overriding the OnPaint method:

protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics myGraph = e.Graphics;
// Draw a rectangle around the Form with myGraph object
}

Si vous avez des questions, ajouter un commentaire...
If you have any questions, post a comment...

7 May 2007

Emulator shared folder as storage card


Vous avez besoin de partager un répertoire entre votre PC et l'émulateur PPC, aller dans le menu File/Configure, puis compléter le chemin "shared directory" avec le chemin d'un répertorie sur le PC

You need a shared folder between your desktop and your emulator, go to the menu File/Configure, General tab. Then you can add a path of a desktop directory in the "Shared Folder" field.



Une fois la manipulation effectuée, le répertoire du PC apparaît sur le PPC comme une storage card. Ensuite, si votre application utilise une carte mémoire externe, vous pourrez tester son comportement lors de l'insertion ou de l'extraction de la carte mémoire.

Once this done, the mapped directory appears in the file system as a storage card. Then, if your application interacts with an external storage, you can test its behavior on the emulator during the insertion or extraction of the memory card.

3 May 2007

Mobile Client Software Factory (patterns and practices)

Mobile Client Software Factory est un ensemble de composants destinés aux architectes de solution mobiles et aux développeurs pour faciliter la mise en place et le développement d'applications Windows Mobile qui interagissent avec des serveurs via des réseaux sans fil (GPRS ou WIFI).
Un composant intéressant est le "orientation aware control", il permet de changer l'écran d'orientation pour votre application sans effort...

The Mobile Client Software Factory provides integrated guidance to help architects and developers create Windows Mobile applications that interact with back-end systems via wireless network (WiFi and GPRS).
An interesting component is the "orientation aware control", it allows to switch screen to a different orientation for your application without effort...


Download at:
http://www.microsoft.com/downloads/details.aspx?familyid=f9176708-9f57-4c0f-97fb-f9c65a9bbf22&displaylang=en
More details at:
http://msdn2.microsoft.com/en-us/library/aa480471.aspx

1 May 2007

Visual Studio 2005 Tip

Voici un petit conseil pour ceux qui ne connaissent pas par coeur les namespaces contenant une classe donc vous avez besoin en C#.
Here it is a small tip for those which don't know the namespaces by heart containing a class you need in C#.
Pour l'exemple, je prendrais l'ajout de la classe SmsMessage
For example, the SmsMessage class will be taken.

Ajouter d'abord la référence nécessaire :
Add the reference necessary:











                    • Taper le nom de la classe que vous voulez ajouter, un petit carré rouge apparaît sous le nom de la classe que vous venez de taper.


                    • Type the name of the class that you want to add, a small red square appears under the name of the class that you have just typed.






                    • Cliquer sur le petit rectangle rouge ou appuyer sur Alt + Shift + F10, un menu apparaît avec le namespace à importer.


                    • Click on the small red rectangle or type the shortcut Alt + Shift + F10, a menu appears with the namespace to be added.





                    Le namespace nécessaire à votre classe est ajouté.

                    The needed namespace is added.