PDA Process

Résolu
Baguauda Messages postés 219 Date d'inscription mercredi 31 août 2005 Statut Membre Dernière intervention 28 novembre 2008 - 14 sept. 2006 à 09:45
Baguauda Messages postés 219 Date d'inscription mercredi 31 août 2005 Statut Membre Dernière intervention 28 novembre 2008 - 19 sept. 2006 à 11:49
bonjour a tous.
voila quel est mon problème,
j'ai fait une application de force de vente sur PDA. Je dispose d'un emulateur pour le lexteur de code à barres qui tourne en arrière plan.
Le problème est pour la "synchro" qui se fait via modem RTC, et qui ne supporte pas que l'emulateur tourne en même temps.
J'utilise pour lancer l'emulateur la fonctin suivante.

Public Class Launch
    <DllImport("CoreDll.DLL", SetLastError:=True)> _
    Private Shared Function CreateProcess(ByVal imageName As String, ByVal cmdLine As String, ByVal lpProcessAttributes As IntPtr, ByVal lpThreadAttributes As IntPtr, ByVal boolInheritHandles As Int32, ByVal dwCreationFlags As Int32, ByVal lpEnvironment As IntPtr, ByVal lpszCurrentDir As IntPtr, ByVal si() As Byte, ByVal pi As ProcessInfo) As Integer
    End Function

    <DllImport("CoreDll.dll")> _
    Private Shared Function GetLastError() As Int32
    End Function

    Public Shared Function CreateProc(ByVal ExeName As String, ByVal CmdLine As String, ByVal pi As ProcessInfo) As Boolean
        If pi Is Nothing Then
            pi = New ProcessInfo
        End If
        Dim si(127) As Byte
        Return CreateProcess(ExeName, CmdLine, IntPtr.Zero, IntPtr.Zero, 0, 0, IntPtr.Zero, IntPtr.Zero, si, pi) <> 0
    End Function 'CreateProc
End Class 'Externals
Public Class ProcessInfo
    Public hProcess As IntPtr
    Public hThread As IntPtr
    Public ProcessId As Int32
    Public ThreadId As Int32
End Class

ce que je recherche c'est la fonction inverse qui va arrêter mon process, afin de lancer ma connexion.

J'ai bien testé
System.Diagnostics.Process myProcess;
puis myProcess.Start(); (qui fonctionne très bien )
mais myProcess.Close(); n'arrete pas grand chose.
et myProcess.Kill(); m'oblige a rebouter le PDA pour refaire tourner correctement la PDA.

Donc si quelqu'un aurais quelques piste afin d'orienté mes recherche, ce serais vachtement bien.

Merci.

2 réponses

cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
18 sept. 2006 à 19:07
Pas de System.Diagnostics.Process sous Net CF, je t'invite à utiliser  les librairies OpenNetCf qui dans l'espace de nom ToolHelp te permettront de gérer tes processus.(ProcessEntry)
Perso je m'en sers et cela marche plutôt bien

Juste faites-le
3
Baguauda Messages postés 219 Date d'inscription mercredi 31 août 2005 Statut Membre Dernière intervention 28 novembre 2008 1
19 sept. 2006 à 11:49
Ca fonctionne en effet mais j'ai le même problème qu'avec System.Diagnostics.Process.
Mais j'ai pu constater plus en détail d'où venais le problème. En fait mon Emulateur de Lecteur de Code à Barres utilise un port. Donc lorsque je Kill et que je relance la bête il ne peut pas fonctionner car "l'option" prise sur le port n'est pas libèrer.
Je vais chercher Comment libèrer mon port.
Merci.
0
Rejoignez-nous