Cr�e ou ouvre un objet s�maphore nomm� ou non
#include <WinAPIProc.au3>
_WinAPI_CreateSemaphore ( $sSemaphore, $iInitial, $iMaximum [, $tSecurity = 0] )
$sSemaphore | Le nom du s�maphore � ouvrir. La comparaison des noms est sensible � la casse. |
$iInitial | Le compteur initial de l'objet Semaphore. Cette valeur doit �tre sup�rieure ou �gale � z�ro et inf�rieure ou �gale � $iMaximum. |
$iMaximum | Le maximum du compteur de l'objet Semaphore. Cette valeur doit �tre sup�rieure � z�ro. |
$tSecurity | [optionnel]Une structure $tagSECURITY_ATTRIBUTES qui sp�cifie un descripteur de s�curit� pour le nouveau s�maphore. Si ce param�tre est 0 (par d�faut), le s�maphore re�oit un descripteur de s�curit� par d�faut. |
Succ�s: | Retourne le handle de l'objet s�maphore nouvellement cr��. |
�chec: | Retourne 0, appelez _WinAPI_GetLastError() pour obtenir des informations suppl�mentaires sur l'erreur. |
Si l'objet Semaphore nomm� existait avant l'appel de la fonction, la fonction retourne le handle de l'objet existant.
Tout processus peut sp�cifier le handle de l'objet Semaphore dans un appel � une fonction _WinAPI_WaitFor.... Les fonctions d'attente pour un seul objet retourne lorsque l'�tat de l'objet sp�cifi� est signal�. Les fonctions d'attente pour de multiples objets peuvent �tre programm�s pour retourner lorsque un ou tous les objets sp�cifi�s sont signal�s. Lorsqu'une fonction d'attente retourne, le processus en attente est lib�r� et peut continuer son ex�cution.
L'�tat d'un objet Semaphore est signal� lorsque son compteur est strictement sup�rieur � z�ro, et non signal� lorsque son compteur est �gal � z�ro.
Le param�tre $iInitial sp�cifie la valeur du compteur initial. Chaque fois qu'un processus d'attente est lib�r� en raison de l'�tat signal� du s�maphore, le compteur du s�maphore est diminu� de 1.
Utilisez la fonction _WinAPI_ReleaseSemaphore() pour incr�menter le compteur d'un s�maphore d'un montant d�termin�.
Le compte ne peut jamais �tre inf�rieur � z�ro ou sup�rieur � la valeur sp�cifi�e pour le param�tre $iMaximum.
Utilisez la fonction _WinAPI_CloseHandle() pour fermer le handle. Le syst�me ferme le handle automatiquement lorsque le processus se termine. Le s�maphore est d�truit lorsque son dernier handle a �t� ferm�.
_WinAPI_CloseHandle, _WinAPI_ReleaseSemaphore
Consultez CreateSemaphore dans la librairie MSDN.
#include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> #include <WinAPIHObj.au3> #include <WinAPIProc.au3> If Not @Compiled Then MsgBox($MB_SYSTEMMODAL, '', 'Pour ex�uter ce script, vous devez premi�rement le compiler, puis ensuite ex�cuter le fichier (.exe).') Exit EndIf Local $hSemaphore = _WinAPI_CreateSemaphore('MySemaphore', 2, 2) _WinAPI_WaitForSingleObject($hSemaphore) _MyGUI() _WinAPI_ReleaseSemaphore($hSemaphore) _WinAPI_CloseHandle($hSemaphore) Func _MyGUI() GUICreate('Test ' & StringReplace(@ScriptName, '.au3', '()')) GUISetState(@SW_SHOW) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE EndFunc ;==>_MyGUI