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 :

Problème fermeture fichier ouvert avec la commande shell


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Assistant commercial
    Inscrit en
    Août 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant commercial

    Informations forums :
    Inscription : Août 2014
    Messages : 53
    Points : 28
    Points
    28
    Par défaut Problème fermeture fichier ouvert avec la commande shell
    Bonjour,

    Je rencontre un problème avec mon programme.

    Je souhaite fermer un fichier ouvert avec la commande shell mais je ne trouve pas de solution.

    Je m'adresse donc à vous pour avoir votre aide.

    Il semble exister des solutions pour fermer l'application notepad voir lien http://vb.developpez.com/faq/?page=Systeme#close_exe. Mais cette fonction ne fonctionne pas avec visual basic 2010 express car erreur générée lors de la compilation ("Impossible de convertir Addressof en long, car long n'est pas un type délégué" donc je ne peux savoir si cette fonctionne répond à mes attentes ou si elle ferme notepad et le fichier ouvert.

    Les lignes de mon programme sont les suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            Dim ReturnValue
            ReturnValue = Shell("c:\windows\notepad.exe c:\monfichier.txt", 1)
            AppActivate(ReturnValue)
    Cette commande a lancé notepad et ouvert le fichier monfichier.txt sur mon écran.

    J'ai effectuer de l'écriture dans ce fichier et je voudrais maintenant le fermer. Quelles commande dois-je utiliser pour seulement fermer le fichier tout en laissant notepad ouvert et les autres fichiers ouvert avant mon application ?

    Merci pour votre aide.

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par Gildas22 Voir le message
    Bonjour,

    Mais cette fonction ne fonctionne pas avec visual basic 2010 express car erreur générée lors de la compilation ("Impossible de convertir Addressof en long, car long n'est pas un type délégué" donc je ne peux savoir si cette fonctionne répond à mes attentes ou si elle ferme notepad et le fichier ouvert.
    Il y a une tête carrée imbécile chez Dell qui a décidé de bloquer l'accès à la FAQ VB parce qu'ils disent que c'est un forum de news. Mais, pour l'instant, ils laissent aller à développez.net . Donc, je dirais que c'est parce que le Long de VB.net n'est pas le Long de l'API.

    Je pense avec beaucoup de points d'interrogation que tu dois remplacer le long dans ta ligne:

    par Integer

    Mais, ceci dit, j'ai l'impression que tu pourrais remplacer ta ligne Shell, en utilisant la classe Process du Framework

  3. #3
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 416
    Points : 5 808
    Points
    5 808
    Par défaut
    Bienvenu sur DVP
    Je sais pas si tu as remarqué ou non que Notepad.exe n'est pas un programme multi-fenêtré. C'est plutôt un SDI(contraire de MDI)
    Donc, même manuellement, on ne peut fermer un fichier ouvert avec Notepad sans fermer ce dernier.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Assistant commercial
    Inscrit en
    Août 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant commercial

    Informations forums :
    Inscription : Août 2014
    Messages : 53
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    Bonjour,

    Il y a une tête carrée imbécile chez Dell qui a décidé de bloquer l'accès à la FAQ VB parce qu'ils disent que c'est un forum de news. Mais, pour l'instant, ils laissent aller à développez.net . Donc, je dirais que c'est parce que le Long de VB.net n'est pas le Long de l'API.

    Je pense avec beaucoup de points d'interrogation que tu dois remplacer le long dans ta ligne:

    par Integer

    Mais, ceci dit, j'ai l'impression que tu pourrais remplacer ta ligne Shell, en utilisant la classe Process du Framework

    Merci clementmarcotte pour ta réponse, j'ai essayé en remplaçant long par Integer mais même problème. Cependant, je pense abandonner cette solution car comme le dit dit l_autodidacte il est impossible de fermer un fichier Notepad sans fermer l'application Notepad et les autres fichiers ouverts.

    Citation Envoyé par l_autodidacte Voir le message
    Bienvenu sur DVP
    Je sais pas si tu as remarqué ou non que Notepad.exe n'est pas un programme multi-fenêtré. C'est plutôt un SDI(contraire de MDI)
    Donc, même manuellement, on ne peut fermer un fichier ouvert avec Notepad sans fermer ce dernier.
    Merci l_autodidacte pour ta réponse. Donc comme il semble ne pas être possible de fermer un fichier texte dans Notepad sans fermer l'application et les autres fichiers ouverts je vais donc revoir mon développement pour fonctionner autrement.

    Cependant tu fais référence à une solution qui est de remplacer la ligne shell par la classe process du Framework, peux-tu mettre un exemple car je ne connais pas cette solution et peut-être pourra-t-elle me servir pour un développement futur. Merci à toi.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Assistant commercial
    Inscrit en
    Août 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant commercial

    Informations forums :
    Inscription : Août 2014
    Messages : 53
    Points : 28
    Points
    28
    Par défaut
    Suite aux réponses de l_autodidacte et de clementmarcotte, je dois revoir mon développement.

    Le programme que je développe actuellement est le suivant:

    Ouverture d'une boite de dialogue où l'utilisateur saisi du texte dans une Textbox. Le programme compare ce texte saisi avec une chaine de caractères. Le résultat de cette comparaison est transféré dans un fichier texte ouvert avec notepad.

    Inconvénient: Quand le fichier texte ouvert doit être fermé alors l'application notepad et les autres fichiers ouverts par l'utilisateur sont obligatoirement fermés également donc si l'utilisateur n'a pas sauvegardé sont travail celui ci est perdu

    Je m'adresse à vous pour savoir si quelqu'un aurai une solution à ce problème.

    Merci

    J'ai réussi a effectuer l'ouverture du fichier texte et à le fermer. Si notepad est déjà lancé avec d'autres fichiers texte alors à la fermeture seulement le fichier texte ouvert par l'application que j'ai créé se fermera. Je vous laisse le code qui pourra servir à d'autres personnes.

    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
     
    Imports System.Threading
     
    Module Module1
     
        Public myProcess As Process
        Public j As Integer
     
        Sub ouverture_fermeture_mon_fichier()
     
            If j = 0 Then
                myProcess = Process.Start("c:\mon_fichier.txt")
                Dim i As Integer
                For i = 0 To 1
                    If Not myProcess.HasExited Then
                        myProcess.Refresh()
                        Console.WriteLine("Physical Memory Usage: " + _
                         myProcess.WorkingSet.ToString())
                        Thread.Sleep(100)
                    Else
                        Exit For
                    End If
     
                Next i
                Form1.Activate() 'Redonne le focus à la boite de dialogue
            End If
            If j = 1 Then
                myProcess.CloseMainWindow()
                myProcess.Close()
                Form1.Activate() 'Redonne le focus au à la boite de dialogue
            End If
     
        End Sub
     
    End Module
    PS:La variable j est une variable qui est utilisée dans une autre sub du projet et qui prend une valeur 0 ou 1 suivant un test que j'effectue dans cette autre sub

    Merci à clementmarcotte qui m' a orienté vers la classe process et qui m'a permis d'avancer sur ce projet et merci également à l_autodidacte.

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

Discussions similaires

  1. [XL-2003] Ligne de commande sélection fichiers ouverts avec nom aléatoire
    Par zadio dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/02/2010, 16h05
  2. fermeture d'un fichier ouvert avec la fonction shell
    Par julio02200 dans le forum Access
    Réponses: 10
    Dernier message: 19/06/2006, 10h58
  3. Réponses: 10
    Dernier message: 27/02/2006, 16h55
  4. Réponses: 11
    Dernier message: 21/11/2005, 16h08
  5. Réponses: 7
    Dernier message: 05/10/2005, 18h06

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