|
|
|||||||||||
|
Cet article est aussi disponible sur l'excellent site c2i.fr de notre ami Richard Clark, l'un des grands spécialistes français de .NET
Il peut être pratique dans une quelconque application pour Pocket PC de pouvoir lancer une autre application comme Internet Explorer & Co. Avec le .NET Framework (pour Windows), c'est relativement simple puisqu'il existe une classe qui fait cela pour vous : System.Diagnostics.Process. Malheureusement, ce type n'existe pas dans le Compact Framework. Il va donc falloir faire appel aux API de WinCE pour cela, et plus particulièrement CreateProcess. Je me suis donc plongé dans la documentation sur MSDN et j'ai lu l'article sur ce sujet sur ce sujet sur CodePPC.com pour eVB. L'approche est similaire mais j'ai voulu l'améliorer un tout petit peu (désolé Stéphane ;-))) J'ai donc créé un nouveau projet Pocket PC et j'ai ajouté une nouvelle classe Process que j'ai placée dans l'espace de noms c2i.Diagnostics et une autre, toujours dans le même espace de noms, ProcessInfo : Imports System.Runtime.InteropServices Cette dernière classe nous retournera des informations sur le nouveau Process crée ainsi que sur le Thread créé. Remarquez l'attribut StructLayout appliqué à cette classe. Elle indique au Framework qu'il doit placer en mémoire de façon contigüe les propriétés de ProcessInfo (sinon il peut les placer comme il veut, un peu partout dans l'adressage mémoire). A l'intérieur de Process, il va falloir déclarer l'API CreateProcess : Private Declare Function CreateProcess Lib "coredll" Alias
"CreateProcessW" ( _ Le premier argument est le nom du fichier de l'application
que l'on souhaite lancer. Pour appeler cette API, j'ai décidé de créer une fonction partagée (Shared) qui en facilite son utilisation : Public Shared Function LaunchAppli(ByVal sName As String,
ByVal sArgs As String) As ProcessInfo Et voila, dans votre application, il n'y a plus qu'une seule ligne à écrire : 'pour le calendrier Facile non ? NB : J'avais écris cet article quand en me baladant sur Internet, je suis tombé sur une article de même nature sur dotnetforce.com paru au même moment. Vous pouvez aller le consulter, il est légèrement différent puisqu'il est en C#.
|
|||||||||||
|
Copyright 2001-2004 - Tous droits réservés Toutes les autres marques et produits présents dans ces pages sont la propriété exclusive de leurs sociétés respectives. |