Liste des processus en VC++
Résolu/Fermé
A voir également:
- Liste des processus en VC++
- Liste déroulante excel - Guide
- Liste de numéro de téléphone suspect 07 ✓ - Forum Mobile
- Annuaire inversé gratuit liste rouge - Forum Internet / Réseaux sociaux
- Le processus ne peut pas accéder au fichier car ce fichier est utilisé par un autre processus ✓ - Forum Windows 7
- Le fichier contient une liste de prénoms. triez ce tableau par ordre alphabétique des prénoms. quel mot est formé par les 6 premières lettres de la colonne code ? - Forum Bureautique
3 réponses
Comme personne ne m'a répondu, j'ai cherché moi-meme, j'ai trouvé une autre manière de faire.
Si j'ai bien compris, une copie de l'application est faite du disque dur vers la RAM, et le code ci-dessous va écrire dans cette copie en RAM.
Il semblerait que l'OS gère cette copie pour n'en avoir qu'une seule par fichier du diske dur.
Les directives de compil (pragma) permettent d'écrire une variable qui est alors globale à toutes les instances de l'executable.
A partir de là, c'est gagné, tant qu'on lance le meme nom de l'executable.
Dans mon cas ce code est dans une DLL et ça marche pour l'exe apelant qui est dans un autre language (visual basic).
Le code:
#include <windows.h>
#pragma data_seg("Shared")
LONG g_Counter = -1;
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws")
int WINAPI WinMain (HINSTANCE hinstExe,
HINSTANCE hinstPrev, LPTSTR pszCmdLine, int nCmdShow) {
BOOL fFirstInstance =
(InterlockedIncrement(&g_Counter) == 0);
if (!fFirstInstance) {
MessageBox(NULL,
__TEXT("Application is already running - ")
__TEXT("Terminating this instance."),
__TEXT("Multiple Instance"),
MB_OK | MB_ICONINFORMATION);
} else {
MessageBox(NULL,
__TEXT("This is the First Instance of the application.\n")
__TEXT("Press OK to close this application."),
__TEXT("Multiple Instance"),
MB_OK | MB_ICONINFORMATION);
}
InterlockedDecrement(&g_Counter);
return(0);
}
issu de : https://www.codeguru.com/cpp/w-p/system/misc/article.php/c5663/Detecting-Multiple-Instances-of-an-Application-in-VC.htm#more
Si j'ai bien compris, une copie de l'application est faite du disque dur vers la RAM, et le code ci-dessous va écrire dans cette copie en RAM.
Il semblerait que l'OS gère cette copie pour n'en avoir qu'une seule par fichier du diske dur.
Les directives de compil (pragma) permettent d'écrire une variable qui est alors globale à toutes les instances de l'executable.
A partir de là, c'est gagné, tant qu'on lance le meme nom de l'executable.
Dans mon cas ce code est dans une DLL et ça marche pour l'exe apelant qui est dans un autre language (visual basic).
Le code:
#include <windows.h>
#pragma data_seg("Shared")
LONG g_Counter = -1;
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws")
int WINAPI WinMain (HINSTANCE hinstExe,
HINSTANCE hinstPrev, LPTSTR pszCmdLine, int nCmdShow) {
BOOL fFirstInstance =
(InterlockedIncrement(&g_Counter) == 0);
if (!fFirstInstance) {
MessageBox(NULL,
__TEXT("Application is already running - ")
__TEXT("Terminating this instance."),
__TEXT("Multiple Instance"),
MB_OK | MB_ICONINFORMATION);
} else {
MessageBox(NULL,
__TEXT("This is the First Instance of the application.\n")
__TEXT("Press OK to close this application."),
__TEXT("Multiple Instance"),
MB_OK | MB_ICONINFORMATION);
}
InterlockedDecrement(&g_Counter);
return(0);
}
issu de : https://www.codeguru.com/cpp/w-p/system/misc/article.php/c5663/Detecting-Multiple-Instances-of-an-Application-in-VC.htm#more