UDF > WinAPIEx > Processes & Synchronization > Synchronization >


_WinAPI_CreateEvent

Crée ou ouvre un objet événement nommé ou non

#include <WinAPIProc.au3>
_WinAPI_CreateEvent ( [$tAttributes = 0 [, $bManualReset = True [, $bInitialState = True [, $sName = ""]]]] )

Paramètres

$tAttributes [optionnel] Structure $tagSECURITY_ATTRIBUTES (ou pointeur sur). Si 0, le handle ne peut pas être hérité par les processus enfants.
Le membre Descriptor de la structure spécifie un descripteur de sécurité pour le nouvel événement.
Si $tAttributes est 0, l'événement reçoit un descripteur de sécurité par défaut.
Les ACL dans le descripteur de sécurité par défaut pour un événement proviennent du jeton principal ou de l'usurpation d'identité du créateur.
$bManualReset [optionnel] Si True, la fonction crée un objet événement d'initialisation manuelle, ce qui nécessite l'utilisation de la fonction de ResetEvent pour définir l'état de l'événement à nonsignaled.
Si False, la fonction crée un objet événement auto initialisé et le système initialise automatiquement l'état de l'événement à nonsignaled après qu'un thread en attente unique a été mis à jour.
$bInitialState [optionnel] Si True, l'état initial de l'objet événement est signaled; sinon, il est nonsignaled
$sName [optionnel] Le nom de l'objet de l'événement. La comparaison des noms est sensible à la casse.
Si $sName correspond au nom d'un objet événement nommé existant, cette fonction demande le droit d'accès EVENT_ALL_ACCESS.
Dans ce cas, les paramètres $bManualReset et $bInitialState sont ignorés parce qu'ils ont déjà été définis par le processus de création.
Si le paramètre $tAttributes n'est pas 0, il détermine si le handle peut être hérité, mais son membre descripteur de sécurité est ignoré.
Si Name est vide, l'objet d'événement est créé sans nom.

Valeur de retour

Succès: Retourne le handle de l'objet événement.
Si l'objet d'événement nommé existait avant l'appel de fonction, la fonction retourne le handle de l'objet existant et GetLastError retourne ERROR_ALREADY_EXISTS.
Échec: Retourne 0, appelez _WinAPI_GetLastError() pour obtenir des informations sur l'erreur

En relation

$tagSECURITY_ATTRIBUTES

Voir aussi

Consultez CreateEvent dans la librairie MSDN.

Example

#include <WinAPIHObj.au3>
#include <WinAPIProc.au3>

Global $g_tEvents = DllStructCreate("handle Event[3];")
$g_tEvents.Event(1) = _WinAPI_CreateEvent(0, True, False)
$g_tEvents.Event(2) = _WinAPI_CreateEvent(0, True, False)
$g_tEvents.Event(3) = _WinAPI_CreateEvent(0, True, False)

HotKeySet("{ESC}", "_Exit")
AdlibRegister("_FireEvent_1", 500)
AdlibRegister("_FireEvent_2", 800)

Local $iEvent = _WinAPI_WaitForMultipleObjects(3, $g_tEvents, False, 100)
While $iEvent <> -1 And $iEvent <> 2
    Switch $iEvent
        Case 0
            ConsoleWrite("+ First Event" & @CRLF)
            _WinAPI_ResetEvent($g_tEvents.Event(1))
        Case 1
            ConsoleWrite("> Second Event" & @CRLF)
            _WinAPI_ResetEvent($g_tEvents.Event(2))
    EndSwitch
    $iEvent = _WinAPI_WaitForMultipleObjects(3, $g_tEvents, False, 100)
WEnd

If $iEvent = 2 Then
    ConsoleWrite("! Exit Event" & @CRLF)
    AdlibUnRegister("_FireEvent_1")
    AdlibUnRegister("_FireEvent_2")
    _WinAPI_CloseHandle($g_tEvents.Event(1))
    _WinAPI_CloseHandle($g_tEvents.Event(2))
    _WinAPI_CloseHandle($g_tEvents.Event(3))
EndIf

Func _Exit()
    _WinAPI_SetEvent($g_tEvents.Event(3))
EndFunc   ;==>_Exit

Func _FireEvent_1()
    _WinAPI_SetEvent($g_tEvents.Event(1))
EndFunc   ;==>_FireEvent_1

Func _FireEvent_2()
    _WinAPI_SetEvent($g_tEvents.Event(2))
EndFunc   ;==>_FireEvent_2