Les Snippets

Connexion

N'autoriser que 'n' instances de l'application

Niveau requis pour utiliser/comprendre cette source : 2 ( Initié )
Créé le 11/01/2008 16:55:27 et initié par Caribensila [Liste]
Vue : 3174
Catégorie(s) : Système
Langages dispo pour ce code :
- Delphi 5



Langage : Delphi 5
Date ajout : 11/01/2008
Posté par Caribensila [Liste]

Ce code est logiquement placé dans le source du projet afin qu'il soit exécuté avant même la création de la Form. Mais il pourrait être placé dans le FormCreate.

program Project1;

uses
  SysUtils,Windows,Dialogs,Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}


const NbreProcess : Integer = 3; //Nbre maxi de processus autorisés.
        SEMAPHORE_ALL_ACCESS  = EVENT_ALL_ACCESS;

var   HdleSem : THandle; //Handle du Sémaphore.
       Count     : Integer;   //Nbre d'accès au Sémaphore dejà utilisés.


begin
HdleSem := OpenSemaphore(SEMAPHORE_ALL_ACCESS,true,'NomSem');//On essaie d'ouvrir le sémaphore.
if HdleSem=0 then begin //Si pas encore créé, c'est donc la 1ère instance et..
  HdleSem := CreateSemaphore(nil,0,NbreProcess,'NomSem'); //..on le crée.
  if HdleSem = 0 then begin //Si échec de la création..
    ShowMessage('Erreur d''ouverture du sémaphore !') ;
    Halt; //..on quitte.
  end ;
end;

if not(releaseSemaphore(HdleSem,1,@count)) then begin //Si l'ajout d'un nouvel accès au Sémaphore échoue..
  ShowMessage('Pas plus de ' + IntToStr(NbreProcess) + ' processus !'); //.. c'est que le nombre maxi est atteint et..
  Halt;      //..on quitte..
  end ;

  Application.Initialize;   //..sinon la limitation n'est pas atteinte et on continue.
  Application.CreateForm(TForm1, Form1);
  Application.Run;
  {Fonction d'attente qui décrémente le compteur du Sémaphore quand on supprime un des process.}
  WaitForSingleObject(HdleSem,0) ;
END.


Remarque :
Merci à mon sauveur, WhiteHippo, qui m'a tendu la main alors que je me noyais lamentablement dans mon Sémaphore ;)

Snippets en rapport avec : Instance, Processus, Process, Sémaphore, Waitforsingleobject



Codes sources en rapport avec : Instance, Processus, Process, Sémaphore, Waitforsingleobject

{Visual Basic, VB6, VB.NET, VB 2005} YET ANOTHER (REMOTE) PROCESS MONITOR
Bonjour à tous, YAPM (Yet Another (remote) Process Monitor) est un programme de monitoring avancé...

{Visual Basic, VB6, VB.NET, VB 2005} COMMENT DÉTECTER LES PROCESSUS CACHÉS (VIRUS, ROOTKITS...) + ÉNUMÉRATION AVANCÉE DES PROCESSUS
Bonjour, voilà une source montrant comment avoir la liste des processus cachés qui tournent sur l...

{Visual Basic, VB6, VB.NET, VB 2005} YET ANOTHER PROCESS MONITOR
Bonjour à tous, YAPM (Yet Another Process Monitor) est un programme permettant d'entièrement gé...

{Visual Basic, VB6, VB.NET, VB 2005} WIN++ OPTIONS AVANCÉES SUR LES FENETRES ET PROCESSUS WINDOWS (CPU LIMITER, CTRL ALT END, METTRE EN PAUSE UN PROCESSUS...)
Bonjour à tous, Voici un programme dont le but est le suivant : Rassembler toutes les petites so...

{C / C++ / C++.NET} UNIX : LISTER LE NOMBRE DE PROCESSUS TOURNANT SUR LA MACHINE
Salut à tous, Petite fonction simple mais utile et commentée qui retourne le nombre de processus ...

{Visual Basic, VB6, VB.NET, VB 2005} CPU LIMITER - LIMITEZ L'UTILISATION DU PROCESSEUR DE CHAQUE PROCESSUS
-------------------------------- MAJ : Une version plus complète de ce programme existe : http://w...

{Visual Basic, VB6, VB.NET, VB 2005} CONTROL_PROCESS PROCESS_VIEWER
c'est un ensemble de code source que g assembler et compiler il permet de voir grace à des fichiers...

{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...

{C / C++ / C++.NET} PROCESS DUMPER
Bonjour/Bonsoir, le titre de l'article parle de lui-même... Ce code montre comment faire un dump d'...

{Visual Basic, VB6, VB.NET, VB 2005} CLM'S EMERGENCY : REFROIDISSEUR DE CPU
J'ai créé cette appli car j'en avais marre que mon pc s'éteigne subitement quand mon processeur chau...