IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Lancer un process après un autre process


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2002
    Messages : 34
    Par défaut Lancer un process après un autre process
    Bonjour,

    Je suis en train de développer un fichier qui devrait installer puis de lancer l'application après sson installation. Je suis sous Windows Mobile CE 5.0 et Compact Framework 2.0 (A cause du matériel utilisé).

    Mon programme principal fonctionne parfaitement .
    Par contre mon petit programme qui doit me permettre de l'installation et le lancement de mon appli ne fait pas ce qui je lui ai écrit.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    Imports System
    Imports System.Diagnostics
     
    Module updater
    	Private WithEvents ObjProcess As New Process()
    	Sub Main(ByVal Args As String())
    		Process.GetProcessById(Args(0)).Kill()
     
    		'Dim ObjProcess As New Process()
    		Dim cabFile As String = "\monRep\TPS.CAB"
    		Dim param As String = cabFile & " /nodelete /noui /silent "
    		Dim psi As New ProcessStartInfo("\WINDOWS\wceload.exe", param)
    		AddHandler ObjProcess.Exited, AddressOf ObjProcess_Exited
    		ObjProcess.StartInfo = psi
    		ObjProcess.EnableRaisingEvents = True
    		ObjProcess.Start()
    		ObjProcess.WaitForExit()
    		ObjProcess.Close()
     
    		'If ObjProcess.ExitCode = 0 Then
    		'	Process.Start("/monRep/TPS.exe", "")
    		'End If
    	End Sub
    	Private Sub ObjProcess_Exited(ByVal sender As Object, ByVal e As System.EventArgs) Handles ObjProcess.Exited
    		Process.Start("/monRep/TPS.exe", "")
    	End Sub
    End Module
    je ne vois pas pourquoi Process.Start("/monRep/TPS.exe", "") ne veut pas se lancer.

    Si quelqu'un peut m'aider ou me montrer mon erreur je suis preneur.

    Merci d'acance.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Je vois pas trop pourqoui ça marche pas, mais tu n'as pas vraiment besoin de l'évènement Exited vu que de toutes façons tu attends la fin de setup avec WaitForExit. Tu peux tout mettre dans la même méthode

  3. #3
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2002
    Messages : 34
    Par défaut
    Bonjour,

    Merci pour la réponse, j'ai aussi essayé de faire cette solution, mais mon Pocket PC ne lance pas le process après le WaitForExit().

    Je ne comprend pas la raison.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    est-ce qu'il y a une erreur ? tu as essayé en pas à pas pour voir ce qui se passe ?

  5. #5
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut process.start,resources
    bonjour
    Le probleme vient des resources de processus qui sont heritees du processus Appelant par le processus Appele.
    Si l'on quitte le processus Appelant avant que le processus Appele soit completement initialise et acquis les resources heritees(working directory,handles de fichiers de donnees,handle de thread,chaines d'environnement...) ,le processus appele ne demarrera pas par manque de resources.
    ici ton code que j'ai repris avec une appli principale WinAppProcess,qui lance l'installeur "WinAppParent" lequel lance "WinAppEnfant"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    'Projet frmAppProcess+ le module UpdaterTest.vb
    Public Class frmAppProcess
        Public Sub New()
     
            ' Cet appel est requis par le Concepteur Windows Form.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            Dim procId As Integer = Process.GetCurrentProcess.Id
            Dim args(0) As String
            args(0) = procId.ToString
            Call UpdaterTest.Main(args)
        End Sub
    End Class
    'Module UpdaterTest
    Imports System
    Imports System.Diagnostics
    Imports System.IO
    Module UpdaterTest
        Private WithEvents ObjProcess As New Process
        Dim param As String
        Dim psi As ProcessStartInfo
        Sub Main(ByVal Args As String())
     
            'Process.GetProcessById(Args(0)).Kill()
            'Dim ObjProcess As New Process()
            'Dim cabFile As String = "\monRep\TPS.CAB"
            'Dim param As String = cabFile & " /nodelete /noui /silent "
            'Dim psi As New ProcessStartInfo("\WINDOWS\wceload.exe", param)
     
            psi = New ProcessStartInfo
            psi.FileName = Directory.GetCurrentDirectory & "\WinAppParent.exe"
            param = "\WinAppEnfant.exe"
            psi.Arguments = param
     
            ObjProcess.StartInfo = psi
            ObjProcess.EnableRaisingEvents = True
            ObjProcess.Start()
            ObjProcess.WaitForExit()
            'Tester le code de sortie Avant Liberation des resources
            If ObjProcess.ExitCode = 0 Then
                MessageBox.Show("WinAppEnfant.exe Lance")
            End If
            'Liberer les Resources de l'installeur en Premier
            'Entre-temps le processus Enfant a herite des resources
            ObjProcess.Close()
     
            'Ici le processus "monAppli a termine sa tache"
            'On peut liberer ses resources et le "killer"
            Process.GetCurrentProcess.CloseMainWindow()
            Process.GetProcessById(Args(0)).Kill()
     
        End Sub
        'Private Sub ObjProcess_Exited(ByVal sender As Object, ByVal e As System.EventArgs) Handles ObjProcess.Exited
        '    'Process.Start("/monRep/TPS.exe", "")
        '    MessageBox.Show("WinAppEnfant.exe Lance")
        'End Sub
    End Module
     
    'Projet WinAppParent 
    Imports System
    Imports System.Diagnostics
    Imports System.IO
     
    Public Class frmProcessParent
        Shared WithEvents objProcessEnfant As Process = New Process
        Shared psi As ProcessStartInfo = New ProcessStartInfo
        Public Shared Sub main(ByVal Args As String())
            psi.FileName = Application.StartupPath & Args(0)
            objProcessEnfant.StartInfo = psi
            objProcessEnfant.Start()
     
            'Dim formeParent As New frmProcessParent
            'Application.Run(formeParent)
        End Sub
    End Class
     
    'Projet WinAppEnfant =>executable "/monRep/TPS.exe" 
    Public Class frmProcessEnfant
        Public Sub New()
     
            ' Cet appel est requis par le Concepteur Windows Form.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
     
        End Sub
     
     
    End Class
    bon code.............

Discussions similaires

  1. Comment lancer une Schédule après une autre schédule ?
    Par remi.c dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 02/11/2011, 18h32
  2. Import swf dans la scene et les lancer l'un apres l'autre
    Par xian21 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 10/11/2008, 14h36
  3. Lire les items d'une SyslistView32 d'un autre process
    Par DiGiTAL_MiDWAY dans le forum Windows
    Réponses: 5
    Dernier message: 20/10/2006, 21h10
  4. Lancer deux programmes d'installation un après l'autre
    Par annedeblois dans le forum Windows
    Réponses: 21
    Dernier message: 01/08/2006, 21h04
  5. Stopper un process après un temps donné
    Par Danae dans le forum Administration système
    Réponses: 12
    Dernier message: 23/12/2005, 14h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo