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 une seul fois l'éxcuteur (programme) (.exe) avec Vb 2010


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2013
    Messages : 27
    Points : 6
    Points
    6
    Par défaut Lancer une seul fois l'éxcuteur (programme) (.exe) avec Vb 2010
    Bonjour,

    Je suis actuellement sur Visual Basic 2010
    Y a t'il un moyen simple pour ne pas lancer deux fois la même application
    exe?
    Je voudrais le modifier dans le script Form1.vb avec Visual Basic 2010 Express.

    merci de votre réponse

    http://www.hostingpics.net/viewer.php?id=370451ghjh.jpg

  2. #2
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonsoir yannel777,

    Je ne sais pas s'il existe cette option (application à instance unique) dans la version express de VB mais sinon voilà ou tu peux paramétrer cela :



    Personnellement je n'utilise pas ces options car je créé mon point d'entrée d'application depuis uns Sub Main...mais ça serait compliqué à t'expliquer avec la classe mutex and CO donc si tu veux un exemple PM moi ton projet et je te ferais cela avec des commentaires.

    A+

  3. #3
    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 wallace1 Voir le message
    Bonsoir yannel777,

    Je ne sais pas s'il existe cette option (application à instance unique) dans la version express de VB mais sinon voilà ou tu peux paramétrer cela :
    Oui, elle est bien là
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2013
    Messages : 27
    Points : 6
    Points
    6
    Par défaut
    Merci, moi je viens juste de débuter en visual basic (mais j'aime approfondir mes connaissances.) et il y certain mot que je ne connaît pas comme
    " d'entrée d'application depuis uns Sub Main..."
    "expliquer avec la classe mutex and CO"
    bref j'aimerai bien que tu m'explique cela en détail.

    oui, j'ai effectivement cette option là!!!

    c'est quoi exactement (application à instance unique)?

  5. #5
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bon OK je vais essayé d’être clair et concis :

    Une entrée d'application :

    Lorsque tu développes une application fenêtrée, tu lances obligatoirement un formulaire principal : par défaut il se nomme "Form1". Dans les paramètres de ton projet tu peux désigner ce qui sera ton point d'entrée par défaut et ça se passe ici :



    Ce qui m'amène à te dire que lorsque tu développes une application console tu démarres obligatoirement sur une procédure nommée "Main" (d'ou la nomination "Sub Main"). Donc ton point d'entrée d'application est une "Sub Main" (paramétrée par défaut dans les paramètres de ton projet : cf capture précédente).


    Donc dans une application de type "Windows" tu peux créer un module ou une classe (nommée "Program") qui possède une procédure nommée "Main" afin de la définir en tant que point d'entrée de ton projet.
    Ainsi elle serait lancée avant l'affichage de ton 1er formulaire (Form1) sous condition qu'une instance de ton application n'est pas en cours d'exécution et bien d'autres tests avant d'afficher ton 1er formulaire :

    Voilà à quoi pourrait ressembler cette dite classe :

    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
     
    Imports System.Threading
     
    Friend Class Program
        <STAThread()>
        Public Shared Sub Main(ByVal Args As String())
            Application.EnableVisualStyles()
            Application.SetCompatibleTextRenderingDefault(False)
            Dim instanceCountOne As Boolean = False
            Using mtex As Mutex = New Mutex(True, Application.ProductName, instanceCountOne)
                If instanceCountOne Then
                    Application.Run(New Form1)
                    mtex.ReleaseMutex()
                End If
            End Using
        End Sub
    End Class
    Pour la classe Mutex :

    il faut se référer à MSDN car je ne vois pas quoi expliquer si ce n'est qu'en l'utilisant ainsi on détecte si un processus du même nom n'est pas déjà en cours !

    Pour l'instance unique :

    Il faut se référer au mot "Instance" dans des cours de programmation objet (POO). Une instance se dit d'un objet créé à partir d'une classe avec toutes les méthodes et propriétés qui lui sont liées :

    http://fr.wikipedia.org/wiki/Instance_(programmation)



    J'espère que c'est assez clair.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2013
    Messages : 27
    Points : 6
    Points
    6
    Par défaut
    est normal que j'obtient cela ?
    quand je ferme mon application.


    http://www.hostingpics.net/viewer.ph...46433fgfgf.jpg

    voici le script de Form1 sous Vb 2010
    --------------------------------------------------------------------------

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            Kill("Shutdown for Windows 8.1.exe")
     
        End Sub
    ---------------------------------------------------------------------------
    Qu'en pensez vous ?

  7. #7
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par yannel777 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            Kill("Shutdown for Windows 8.1.exe")
     
        End Sub
    Ce n'est pas comme ça qu'on ferme une application en cours d'exécution !!!!!!!

    C'est ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
        Application.exit()
     
    End Sub

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2013
    Messages : 27
    Points : 6
    Points
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
        Application.exit()
     
    End Sub
    cela ne mentionne pas du tout votre méthode. Avant j'avais trouvé cette commande là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
    Me.Hide()
     
    End Sub

    mais le seul problème c'est que application est toujours dans arborescence du processus de Windows!!!


    (Sans faire la touche "Suppr" dans arborescence de Windows)
    Comment on fait pour l'enlevé ? ( script en ligne de commande pour form1.vb dans visual Basic 2010)

  9. #9
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par yannel777 Voir le message
    cela ne mentionne pas du tout votre méthode. Avant j'avais trouvé cette commande là
    Bonjour yannel777,

    Qu'entends-tu par là cela ne mentionne pas ma méthode ?????

    Si tu souhaites appeler des lignes de commande dans tes applications alors il faut pas faire de langage objet et rester en langage procédural !

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2013
    Messages : 27
    Points : 6
    Points
    6
    Par défaut
    j'ai essayer mais cela ne lit pas votre ligne de commande

    Appication.exit

  11. #11
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par yannel777 Voir le message
    j'ai essayer mais cela ne lit pas votre ligne de commande

    Appication.exit
    Ce n'est pas "appication.exit" mais "Application.Exit()" et ce n'est pas une ligne de commande c'est une instruction !!!


    Bon je crois avoir saisi ton soucis :


    1- Créé une variable globale de type boolean qui se nomme "_restartNow" (attribut "Private").

    2- Créé dans ton projet le gestionnaire d'évènement "FormClosed" de ton formulaire principal (dans mon exemple "Form1"):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
            If _restartNow Then
                Shell("C:\Windows\System32\shutdown.exe /r /t 0", AppWinStyle.Hide, True)
            End If
    End Sub

    3- Renseignes correctement ton gestionnaire d'évènement "Click" de ton "Button1" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
        _restartNow = true
        Me.close
     
    End Sub

    Voilà à quoi ça ressemble l'ensemble :

    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
     
    Public Class Form1
     
        Private _restartNow As Boolean
     
        Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
            If _restartNow Then
                Shell("C:\Windows\System32\shutdown.exe /r /t 0", AppWinStyle.Hide, True)
            End If
        End Sub
     
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            _restartNow = True
            Me.Close()
        End Sub
     
    End Class
    PS 1 : Si tu souhaites avoir des explications sur les arguments dans la signature de la routine "Shell" alors l'Intellisense de ton EDI devrait pouvoir t'expliquer tout ça.
    Il est également possible d'utiliser la classe "Process" mais c'est à toi de voir si ce que j'ai rédigé éveil ta curiosité.

    PS 2 : à toi de trouver les arguments correspondants de l'outil en ligne de commande "Shutdown.exe" afin d'éteindre le PC en ouvrant une fenêtre cmd et tu tapes :


    A+

Discussions similaires

  1. lancer une seul fois timer
    Par Invité dans le forum C#
    Réponses: 6
    Dernier message: 28/11/2012, 23h40
  2. [AS1-2] Lancer un code AS une seul fois...
    Par rteuteu55 dans le forum Flash
    Réponses: 6
    Dernier message: 13/04/2006, 14h05
  3. lancer 1 seul fois l'exe..
    Par lamalice dans le forum Windows
    Réponses: 8
    Dernier message: 27/10/2004, 15h26

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