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 :

Fermer un fichier Notepad (ou autre) par programme [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Musicien
    Inscrit en
    Juin 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Portugal

    Informations professionnelles :
    Activité : Musicien
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2020
    Messages : 13
    Par défaut Fermer un fichier Notepad (ou autre) par programme
    Bonjour,
    avec une petit programme en VB j'ouvre un fichier texte créé par mon programme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      Private Sub OuvrirLog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OuvrirLog.Click
               Try
                    If File.Exists(FicLire) Then
                        Shell("C:\Windows\notepad.exe " + FicLire, vbMaximizedFocus)
                    Else
                        msgbox("Message 901" + Chr(10), FicLire + Chr(10), "introuvable")
                    End If
                Catch ex As Exception
                    msgbox(ex.Message)
                End Try
     End Sub
    J'aimerais pouvoir fermer ce fichier (fermer la fenêtre afin qu'elle n'apparaisse plus sur mon écran au lieu de le faire en cliquant sur «Fermer» du programme notepad.exe ) mais à partir de mon programme, par exemple en cliquant sur un bouton (ou le même).
    Merci pour votre aide.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 545
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 545
    Par défaut
    une façon brutale c'est de tuer le processus de l'application ciblée

  3. #3
    Membre averti
    Homme Profil pro
    Musicien
    Inscrit en
    Juin 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Portugal

    Informations professionnelles :
    Activité : Musicien
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2020
    Messages : 13
    Par défaut
    Merci
    J'ai entendu parler de cela, mais je n'ai pas réussi à le faire correctement : ça me ferme tous les fichiers notepad ouverts !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            For Each process__1 In Process.GetProcessesByName("notepad")
                Try
                    process__1.Kill()
                Catch ex As Exception
                End Try
            Next
        End Sub

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Si l'objectif est de montrer le contenu du fichier, tu n'a pas besoin de l'ouvrir avec Notepad.
    Tu peux te contenter de l'afficher dans ton programme avec un composant TextBox dont la propriété Multiline est active (ou bien un RichTextBox).

  5. #5
    Membre averti
    Homme Profil pro
    Musicien
    Inscrit en
    Juin 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Portugal

    Informations professionnelles :
    Activité : Musicien
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2020
    Messages : 13
    Par défaut
    Merci pour cette suggestion, mais le fichier texte est très volumineux et il n'est pas aisé de le lire dans un textbox. Je l'ai fait mais ça n'est pas très pratique.
    D'autre part, mon application ouvre sur demande plusieurs fichiers en même temps et ce sont ceux-là que je voudrais fermer en une seule fois (mais pas d'autres ouverts que je veux garder ouverts)


    EDIT : Voici la «solution» que j'ai trouvée...

    1) j'ai téléchargé un free genre notepad : TedNPad.exe
    2) je l'ai renommé «TedNPadInfoDynamik.exe» et copié dans le répertoire de mon application (qui se nome InfoDynamik).
    3) j'ouvre le ou les fichiers texte avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     Private Sub Ouvrir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ouvrir.Click
            Try
                If File.Exists(Myfile) Then
                    Dim Ted As String = Application.StartupPath + "\TedNPadInfoDynamik.exe " + Myfile
                    Shell(Ted, vbMaximizedFocus)
                Else
                    MsgBox("Message 501" + Chr(10), Myfile , "introuvable")
                End If
            Catch ex As Exception
                MsgBox("Message 502", ex.Message, " ")
            End Try
     
        End Sub
    4) je ferme avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            For Each Myprocess In Process.GetProcessesByName("TedNPadInfoDynamik")
                Try
                    Myprocess.Kill()
                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try
            Next
        End Sub
    Pas très élégant mais ça le fait...

  6. #6
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Citation Envoyé par Minuitdixhuit Voir le message
    Merci pour cette suggestion, mais le fichier texte est très volumineux et il n'est pas aisé de le lire dans un textbox. Je l'ai fait mais ça n'est pas très pratique
    Certainement parce que tu t'es contenté de poser le composant sur la fiche.
    Il faut paramétrer les propriétés suivantes :
    Multiline à true,
    Scrollbars à Both,
    Dock à Fill.

    C'est exactement ce qu'est Notepad, une fenêtre avec un grosse Textbox au milieu...

    Citation Envoyé par Minuitdixhuit Voir le message
    D'autre part, mon application ouvre sur demande plusieurs fichiers en même temps et ce sont ceux-là que je voudrais fermer en une seule fois (mais pas d'autres ouverts que je veux garder ouverts)
    Rien ne t'empêche d'ouvrir plusieurs instances de la même fenêtre de ton application.

    Citation Envoyé par Minuitdixhuit Voir le message
    Pas très élégant mais ça le fait...
    Sans commentaires...

  7. #7
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Quasi identique au code de Excalybur, j'utilise celui-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Private Sub KillOldProcess(NomDuProcess As String)
            Dim Cpt As Integer = 0   ' Inutile si pas de MessageBox
            Dim P As System.Diagnostics.Process
            Try
                For Each P In System.Diagnostics.Process.GetProcesses
                    If P.ProcessName.ToUpper Like "*" & NomDuProcess.ToUpper & "*" Then
                        P.Kill()
                        Cpt += 1   ' Inutile si pas de MessageBox
                    End If
                Next
            Catch
            End Try
            ' MessageBox.Show(Cpt & " Process trouvé(s)")  ' La MessageBox facultative
        End Sub
    Et pour arrêter le Notepad.exe, il suffit d'appeler KillOldProcess("Notepad").

    ...

  8. #8
    Membre éprouvé Avatar de excalybur
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2014
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 317
    Par défaut
    Bonjour

    C'est vrai Phil Rob que nous avons pas mal échangé il y a quelques temps sur le sujet ! Ta solution est plus complète encore avec les messages optionnels.

    a+

  9. #9
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Merci Ecalybur, mais je ne suis pas que l'une soit meilleure que l'autre.
    Ma solution n'est qu'une légère variante.
    A Minuitdixhuit de choisir celle qui lui plait le mieux.
    Bon dimanche

  10. #10
    Membre averti
    Homme Profil pro
    Musicien
    Inscrit en
    Juin 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Portugal

    Informations professionnelles :
    Activité : Musicien
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2020
    Messages : 13
    Par défaut
    Pour être honnête, je n'ai pas encore eu le temps d'appliquer vos solutions. Je vous remercie grandement de vos conseils !
    Mais, il me semble que la solution (par rapport à la très peu orthodoxe que j'ai utilisée) ne résout pas, sauf erreur, un des petits soucis : ce sont TOUS les .txt notepad (ou autre selon le prog ouvert) qui sont fermés et non juste seuls appelés par le programme qui les a ouvert.
    Encore une fois, je suis loin d'être une flèche en analyse et en programmation, mais je suis surpris qu'il ne semble pas exister de fonction permettant de fermer par programmation, par exemple, un .txt bien précis ouvert par notepad (ou autre) et pas les autres qui auraient été ouverts pour une autre raison et qu'on ne désirerait pas fermer.
    Pardonnez-moi si je ne suis pas clair ou si je n'ai pas bien compris vos solutions.
    Bon Dimanche.

  11. #11
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    ce sont TOUS les .txt notepad (ou autre selon le prog ouvert) qui sont fermés et non juste seuls appelés par le programme qui les a ouvert
    En effet ...

    Mais en parcourant les codes que tu as postés précédemment, je vois que tu lances le Notepad avec la commande Shell. Or, celle=ci renvoie l'Id du process ouvert. Il te suffit donc (sauf erreur de ma part) de faire un Kill de ce process pour fermer ce Notepad.

    Par exemple :
    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
     
    ' Au niveau du Form :
     Dim LeProcess As Integer
    ' ..........
      Private Sub OuvrirLog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OuvrirLog.Click
               Try
                    If File.Exists(FicLire) Then
                      LeProcess =  Shell("C:\Windows\notepad.exe " + FicLire, vbMaximizedFocus)
                    Else
                        msgbox("Message 901" + Chr(10), FicLire + Chr(10), "introuvable")
                    End If
                Catch ex As Exception
                    msgbox(ex.Message)
                End Try
     End Sub
     
    ' Et ailleurs,là où cela te convient, dans une procédure :
             Dim P As System.Diagnostics.Process = System.Diagnostics.Process.GetProcessById(LeProcess)
             P.Kill()
    ' ..........
    J'espère que ceci t'aidera ...

  12. #12
    Membre averti
    Homme Profil pro
    Musicien
    Inscrit en
    Juin 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Portugal

    Informations professionnelles :
    Activité : Musicien
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2020
    Messages : 13
    Par défaut
    Super.
    Merci à tous pour votre patience et vos divers commentaires instructifs.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 17/04/2013, 22h26
  2. Convertir un fichier excel en pdf par programme
    Par franck SEFIC dans le forum Composants VCL
    Réponses: 2
    Dernier message: 16/06/2011, 15h57
  3. Telecharger fichier dans JSP généré par un autre programme
    Par ilellouc dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 14/08/2009, 10h30
  4. Réponses: 2
    Dernier message: 12/03/2009, 19h57
  5. Fermer l'editeur VBA par programmation
    Par bossun dans le forum Général VBA
    Réponses: 1
    Dernier message: 15/02/2007, 14h14

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