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 avec la source: Empêcher une application de se lancer plus d'une fois


Sujet :

VB.NET

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Points : 244
    Points
    244
    Par défaut Problème avec la source: Empêcher une application de se lancer plus d'une fois
    Bonjour je voulais utilisé la source ici pour empêcher mon application de se lancer plus d'une fois.

    Donc je place le code dans le splashscreen de mon application

    voic le 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
    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
     
     
     
    Imports System
    Imports System.Drawing
    Imports System.Collections
    Imports System.ComponentModel
    Imports System.Windows.Forms
    Imports System.Data
    Imports System.Reflection
    Imports System.Diagnostics
     
    Public NotInheritable Class SplashScreen
     
    Private Sub SplashScreen1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     
            Dim file As String = Application.StartupPath + "\" + System.Reflection.Assembly.GetExecutingAssembly.GetName.Name + ".exe"
    End Sub
     
    '---------------------------------------------------
        '--- construction d'un second Thread
        '--- pour tester s'il y a bien une double excécution
        '---------------------------------------------------
        <STAThread()> _
                 Shared Sub Main()
            If Not CheckProcess() Then
                Application.Run(New SplashScreen)
            Else
                MessageBox.Show("Application déjà lancée", "Erreur")
                Application.Exit()
            End If
        End Sub
        '-----------------------------------------
        '---
        '--- Fonction : Test du processus
        '---            
        '---            Entrée : Aucune
        '---            Sortie : True ou false
        '-----------------------------------------
        Private Shared Function CheckProcess() As Boolean
            Dim pcur As Process = Process.GetCurrentProcess
            Dim ps As Process() = Process.GetProcesses
            For Each p As Process In ps
                If Not (pcur.Id = p.Id) Then
                    If pcur.ProcessName = p.ProcessName Then
                        Return True
                    End If
                End If
            Next
            Return False
        End Function
     
    End Class
    Malheureusement j'arrive a lancer l'application plusieurs fois
    Alors que la source fonctionne !!

    Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    Salut,

    Cette source vérifie qu'il existe si il existe un process du même nom.
    Il est possible qu'en debug ça ne passe pas à cause de VS qui ajoute le host.

    essaye un peu en dehors du debug de VS.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Points : 95
    Points
    95
    Par défaut
    Bonjour,

    Je ne sais pas si cela conviendra à ton besoin, mais tu as une solution simple pour n'autoriser qu'une instance de ton application.
    Dans les propriétés de ton projet, onglet Application, tu coches la case : Application à instance unique.

    Normalement, si tu relances ton application, alors ta première instance prend le focus, et tu n'auras pas de nouvelle instance de lancée.

    NB : option disponible sous Visual Studio.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Points : 244
    Points
    244
    Par défaut
    Merci cela me convient tout a fait

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

Discussions similaires

  1. Empêcher une application de se lancer plus d'une fois
    Par Thomas Lebrun dans le forum Contribuez
    Réponses: 0
    Dernier message: 29/12/2010, 10h56
  2. Empêcher une application de se lancer plus d'une fois
    Par Thomas Lebrun dans le forum Contribuez
    Réponses: 0
    Dernier message: 28/12/2010, 23h24
  3. Réponses: 0
    Dernier message: 02/01/2009, 15h40
  4. Problème avec la source url photos
    Par philou029 dans le forum Langage
    Réponses: 2
    Dernier message: 14/12/2007, 19h05
  5. probléme avec kernel-source
    Par khaliloum dans le forum Administration système
    Réponses: 1
    Dernier message: 21/08/2007, 21h15

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