Theos37
Messages postés7Date d'inscriptionvendredi 8 décembre 2000StatutMembreDernière intervention23 mai 2008
-
14 avril 2008 à 09:50
Theos37
Messages postés7Date d'inscriptionvendredi 8 décembre 2000StatutMembreDernière intervention23 mai 2008
-
14 avril 2008 à 17:53
Bonjour,
Je développe une application VB, ce programme est accessible par plusieurs utilisateurs.
je voudrais empêcher l'ouverture du programme si celui-ci est déjà ouvert par un autre utilisateur sur le réseau.
Comment dois-je m'y prendre?
Theos !
A voir également:
Empêcher l'ouverture du programme si celui-ci est déjà ouvert par un autre utili
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 14 avril 2008 à 10:31
valable sur le même poste, même...
donc ca ne va pas pour une utilisation pour le réseau.
tu peux passer par des APIs, d'autres choses du genre, ou pour faire un truc hyper simple, te contenter de créer et laisser un fichier ouvert...
Demande a executer la procédure Main au démarrage du projet (a regler dans els propriétés de ce dernier)
dans un module normal (Module1) ajoutes :
Option Explicit
Private moApp As CSingleInstance
Sub Main()
Set moApp = New CSingleInstance
If moApp.IsAlreadyLaunched Then
MsgBox "Application en cours d'utilisation sur un autre poste."
Else
Form1.Show
End If
End Sub
Ajoutes également un module de classe nommé CSingleInstance et colles-y:
Option Explicit
Private mbIsAlreadyLaunched As Boolean
Private miFile As Integer
Public Property Get IsAlreadyLaunched() As Boolean
IsAlreadyLaunched = mbIsAlreadyLaunched
End Property
Private Sub Class_Initialize()
If LenB(Dir$(App.Path & "\a.txt")) Then
On Local Error Resume Next
Kill App.Path & "\a.txt"
If Err Then
mbIsAlreadyLaunched = True
Exit Sub
End If
End If
miFile = FreeFile
Open App.Path & "\a.txt" For Output As miFile
End Sub
Private Sub Class_Terminate()
If Not mbIsAlreadyLaunched Then
Close miFile
Kill App.Path & "\a.txt"
End If
End Sub
et voilà !
le premier arrivé créera un fichier a.txt sur lequel il garde la main.
les suivants viendront, tenteront de supprimer ce fichier.
s'ils y arrivent, c'est que l'appli 1 a crashé...
s'ils n'y parviennent pas, c'est que l'appli 1 tourne toujours
et lorsque l'appli 1 est fermée, le fichier est finalement supprimé...
très basique, pas forcément très orthodoxe , mais efficace et simple a comprendre