Les Snippets

Connexion

n'autoriser qu'une seule instance de l'application

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 31/08/2006 16:47:47 et initié par Renfield [Liste]
Date de mise à jour : 07/10/2006 16:30:16
Vue : 9093
Catégorie(s) : Système
Langages dispo pour ce code :
- VB6
- VB6
- Windev
- Windev
- Delphi 5
- C# 1.x, C# 2.x
- Voir tous les langages pour ce code snippet



Langage : VB6
Date ajout : 31/08/2006
Posté par Renfield [Liste]
DateMAJ : 06/09/2006
Public Function IsAlreadyRunning() As Boolean
  Dim hMap As Long
  Dim pMem As Long
   Dim hPid As Long
       '# Nous tentons ici d'acceder au mappage (précedemment créé ?)
       hMap = OpenFileMapping(FILE_MAP_READ, 0, App.Title)
       If hMap <> 0 Then
           '# L'application est déjà lancée.
           pMem = MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0)
           If pMem <> 0 Then
               '# On récupère le handle vers la précédente fenêtre
               CopyMemory hPid, ByVal pMem, 4
               If hPid Then
                   On Error Resume Next
                   '# On active l'instance précedente
                   AppActivate hPid
                   On Error GoTo 0
               End If
               UnmapViewOfFile pMem
           End If
           '# On libère le handle hmap
           CloseHandle hMap
           '# et on prévient l'appelant que l'application avait dejà été lancée.
           IsAlreadyRunning = True
       Else
           '# Nous sommes dans la première instance de l'application.
           '# Nous allons laisser une marque en mémoire, pour l'indiquer
           hMap = CreateFileMapping(INVALID_HANDLE_VALUE, ByVal 0&, PAGE_READWRITE, 0, 4, App.Title)
           If hMap <> 0 Then
               '# On ouvre le 'fichier' en écriture
               pMem = MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0)
               If pMem <> 0 Then
                   '# On y écrit le process courant
                   CopyMemory ByVal pMem, GetCurrentProcessId(), 4
                   UnmapViewOfFile pMem
               End If
               '# Pas de CloseHandle hMap ici, sous peine de détruire le mappage lui-même...
           End If
       End If
   End Function
Remarque :
L'avantage par rapport a l'instruction App.PrevInstance de VB, c'est qu'ici, l'éventuelle première instance sera réactivée.

Snippets en rapport avec : Instance, Unique, Application



Codes sources en rapport avec : Instance, Unique, Application

{JAVA / J2EE} INSTANCE UNIQUE D'UNE APPLICATION
La demande revenant souvent sur les forums (et ayant cherché moi-même par le passé), j'ai développé ...

{JAVA / J2EE} INSTANCE UNIQUE D'UN PROGRAMME (SANS SOCKET NI FICHIER)
Salut à tous, voici l'idée : une classe nommée essaie de renommer le jar en app_tmp.jar, si ...

{C# / C#.NET} INSTANCE UNIQUE + COMMUNICATION DE MESSAGES (COMPATIBLE 32 ET 64 BIT)
Cette DLL permet d'avoir une instance unique d'un programme en plus de permettre: 1. La communicat...

{JAVA / J2EE} UNE SEULE INSTANCE DE PROGRAMME SANS SOCKET
Dans le cadre d'un projet, je devais mettre en place un système multi-agents sur un réseau très sécu...

{Visual Basic, VB6, VB.NET, VB 2005} INSTANCE UNIQUE DE VOTRE APPLICATION
App.PrevInstance, oui, ok... mais ca ne permet que de savoir si l'exe courant a été lancé ou non....

{C / C++ / C++.NET} UNIQUE INSTANCE PROG (WIN32)
2 projets dans le zip pour 2 methodes. Les 2 methodes ramenent, si c'est le cas, l'ancienne instanc...

{C# / C#.NET} LANCEUR POUR WORLD OF WARCRAFT
World of Warcraft (Wow) est un MMORPG. Cette application permet à Wow de se connecter à différents ...

{Visual Basic, VB6, VB.NET, VB 2005} STANDARISATION D'APPLICATIONS
Cet utilitaire permet d'exécuter les applications que vous utilisez le plus souvent directement depu...

{Visual Basic, VB6, VB.NET, VB 2005} LISTER LES NOMS DES INSTANCES SQL SERVER.
Cette fonction vous permet de savoir les noms des instances SQL Server Installees sur votre machine ...

{Flash} DESSIN APPLICATION AS3
une base pour une application de dessin code action scripte 3 avec redimensionnement, palette & ta...