none
Executer plusieurs fois une ouverture de Fichiers. RRS feed

  • Question

  • Bonjour...

    Ma question est la suivante : Dans un traitement je dois lancer plusieurs fichiers utilises par une meme application.

    J'utilise le Process.start pour la premiere occurence des fichiers. Que dois je utiliser pour ouvrir les autres fichiers ?  l'application ne doit etre lancee qu'une seule fois (lors de l'appel process.start). 

    En fait pour faire simple c'est le "ouvrir avec" de windows que je souhaite utiliser mais avec la restriction d'un seul thread pour l'application qui doit lire les fichiers.

    Merci de vos idees.

    Cordialement.

    Thierry

    samedi 3 décembre 2016 20:00

Réponses

  • Je ne suis pas sur de comprendre la question.

    Cependant vous pouvez ouvrir autant de fois un fichier avec ProcessStart et l'application par défaut designée dans Windows:

    et le code:

    'Start l'app par défaut d'après le fichier passé
            Dim monFichier As String = Application.StartupPath & "\FichierTxt.txt"
            Try
                Dim startInfo As New ProcessStartInfo(monFichier)
                startInfo.WindowStyle = ProcessWindowStyle.Normal
                Process.Start(startInfo)
            Catch ex As Exception
                RichTextBox1.AppendText("Le démarrage sur le fichier" & monFichier & " a levé une Exception : " & ex.Message)
            End Try


     Est-ce que vous voulez depuis votre application passer une commande du genre Fichier\Ouvrir à l'application?

    Si vous voulez ouvrir avec Notepad sans accumuler les fenêtres ouvertes vous pouvez laisser l'utilisateur choisir en envoyant Ctrl-O à notepad, ou alors vous êtes obligé de fermer notepad (process.Kill) et de relancer:

    et le code:

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
            'Activer le process dont on a l'ID        
            AppActivate(notepadProcess.Id)
            'Envoyer Ctrl-O à l'application qui a le Focus
            My.Computer.Keyboard.SendKeys("^o", True)
        End Sub
    
        Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
            'Un autre fichier
            Dim monFichier As String = Application.StartupPath & "\UnAutreFichier.txt"
            Try
                'On arrête le process notepad
                notepadProcess.Kill()
                'On repart avec le nouveau fichier
                Dim startInfo As New ProcessStartInfo(monFichier)
                startInfo.WindowStyle = ProcessWindowStyle.Normal
                startInfo.UseShellExecute = True ' False makes no difference
    
                notepadProcess = Process.Start(startInfo)
    
            Catch ex As Exception
                'Debug.Print("Exception : " & ex.Message)
                RichTextBox1.AppendText("Le démarrage sur le fichier" & monFichier & " a levé une Exception : " & ex.Message)
            End Try
        End Sub


    dimanche 4 décembre 2016 10:12

Toutes les réponses

  • Bonjour Vous pouvez utiliser les méthode de type Task Asny Pour plus d'information consulter le lien suivant : http://www.e-naxos.com/Blog/post/De-la-bonne-utilisation-de-AsyncAwait-en-C.aspx

    Said WAHID

    • Proposé comme réponse Said WAHID samedi 3 décembre 2016 22:23
    samedi 3 décembre 2016 22:19
  • Je ne suis pas sur de comprendre la question.

    Cependant vous pouvez ouvrir autant de fois un fichier avec ProcessStart et l'application par défaut designée dans Windows:

    et le code:

    'Start l'app par défaut d'après le fichier passé
            Dim monFichier As String = Application.StartupPath & "\FichierTxt.txt"
            Try
                Dim startInfo As New ProcessStartInfo(monFichier)
                startInfo.WindowStyle = ProcessWindowStyle.Normal
                Process.Start(startInfo)
            Catch ex As Exception
                RichTextBox1.AppendText("Le démarrage sur le fichier" & monFichier & " a levé une Exception : " & ex.Message)
            End Try


     Est-ce que vous voulez depuis votre application passer une commande du genre Fichier\Ouvrir à l'application?

    Si vous voulez ouvrir avec Notepad sans accumuler les fenêtres ouvertes vous pouvez laisser l'utilisateur choisir en envoyant Ctrl-O à notepad, ou alors vous êtes obligé de fermer notepad (process.Kill) et de relancer:

    et le code:

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
            'Activer le process dont on a l'ID        
            AppActivate(notepadProcess.Id)
            'Envoyer Ctrl-O à l'application qui a le Focus
            My.Computer.Keyboard.SendKeys("^o", True)
        End Sub
    
        Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
            'Un autre fichier
            Dim monFichier As String = Application.StartupPath & "\UnAutreFichier.txt"
            Try
                'On arrête le process notepad
                notepadProcess.Kill()
                'On repart avec le nouveau fichier
                Dim startInfo As New ProcessStartInfo(monFichier)
                startInfo.WindowStyle = ProcessWindowStyle.Normal
                startInfo.UseShellExecute = True ' False makes no difference
    
                notepadProcess = Process.Start(startInfo)
    
            Catch ex As Exception
                'Debug.Print("Exception : " & ex.Message)
                RichTextBox1.AppendText("Le démarrage sur le fichier" & monFichier & " a levé une Exception : " & ex.Message)
            End Try
        End Sub


    dimanche 4 décembre 2016 10:12
  • bonjour...

    Merci a vous deux un peu tardif..... entre temps j ai trouve la solution.... le process.start a bien fonctionne...

    lundi 5 décembre 2016 09:45
  • Si les posts vous ont aidés, marquez la réponse et votez. Merci
    lundi 5 décembre 2016 16:31