Funktionreferenz


_WinAPI_SetEvent

Beschreibung anzeigen in

Setzt das angegebene Ereignisobjekt in den signalisierten Status

#include <WinAPIProc.au3>
_WinAPI_SetEvent ( $hEvent )

Parameter

$hEvent Handle zu dem Ereignisobjekt

Rückgabewert

Erfolg: True
Fehler: False. Es ist _WinAPI_GetLastError() aufzurufen um erweiterte Fehlerinformationen zu erhalten.

Bemerkungen

Der Status eines manuell zurückgesetzten Ereignisobjekts bleibt solange signalisiert, bis explizit der nicht signalisierte
Status durch die ResetEvent Funktion gesetzt wurde. Alle wartenden Threads oder alle Threads, die anschließend Operationen beginnen,
welche auf das festgelegte Ereignisobjekt durch Aufruf einer der Wait... Funktionen warten, können erst dann freigegeben werden,
wenn der Status des Objekts signalisiert ist.

Siehe auch

Suche nach SetEvent in der MSDN Bibliothek.

Beispiel

Beispiel 1

#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
While 1
    $iEvent = _WinAPI_WaitForMultipleObjects(3, $g_tEvents, False, 100)
    Switch $iEvent
        Case 0
            ConsoleWrite("+ Erstes Event" & @CRLF)
            _WinAPI_ResetEvent($g_tEvents.Event(1))
        Case 1
            ConsoleWrite("> Zweites Event" & @CRLF)
            _WinAPI_ResetEvent($g_tEvents.Event(2))
        Case 2
            ConsoleWrite("! Beenden 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))
            ExitLoop
        Case -1 ;Error
            ExitLoop
    EndSwitch
    Sleep(10)
WEnd

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

Beispiel 2

#include <WinAPI.au3>
#include <WinAPIProc.au3> ;needed for _WinAPI_ResetEvent

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

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

Global $iEvent
While 1
    ;$iEvent = _WinAPI_WaitForMultipleObjects(3, $tEvents, False, 100) ;Maybe future version
    $iEvent = _WinAPI_WaitForMultipleObjects(3, DllStructGetPtr($tEvents), False, 100)
    Switch $iEvent
        Case 0
            ConsoleWrite("+ First Event" & @CRLF)
            _WinAPI_ResetEvent($tEvents.Event(1))
        Case 1
            ConsoleWrite("> Second Event" & @CRLF)
            _WinAPI_ResetEvent($tEvents.Event(2))
        Case 2
            ConsoleWrite("! Exit Event" & @CRLF)
            AdlibUnRegister("_FireEvent_1")
            AdlibUnRegister("_FireEvent_2")
            _WinAPI_CloseHandle($tEvents.Event(1))
            _WinAPI_CloseHandle($tEvents.Event(2))
            _WinAPI_CloseHandle($tEvents.Event(3))
            ExitLoop
        Case -1 ;Error
            ExitLoop
    EndSwitch
WEnd


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


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


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