Dela via


Vad är WinEvents?

Serverprogram och operativsystemet använder WinEvents för att meddela klienter när en ändring sker i systemet eller i användargränssnittet.

WinEvent-stöd är en funktion i Windows-operativsystemet som tillhandahåller:

  • Ett enkelt sätt för klienter att registrera sig för händelsemeddelanden.
  • En mekanism för att mata in klientkod i servrar.
  • Routning av händelser från servrar till intresserade klienter.
  • Automatisk händelsegenerering för de flesta HWND--baserade kontroller.

Händelsegenerering för HWND--baserade kontroller är särskilt viktigt för serverutvecklare. Körmiljön för Microsoft Active Accessibility tillhandahåller IAccessible proxyrepresentanter för alla standardgränssnittselement. På samma sätt genererar systemet automatiskt lämpliga WinEvents när det skapar, förstör, flyttar, ändrar storlek på eller utför någon annan åtgärd på en HWND--baserad kontroll.

Vissa WinEvents, inklusive allmänna HWND- händelser, stöds automatiskt av systemet. Andra typer av WinEvents, till exempel tillståndsändringar eller urvalshändelser som är specifika för en viss kontroll, stöds av Microsoft Active Accessibility-servrar.

När en händelse inträffar som påverkar användargränssnittet kan servrar sända ett händelsemeddelande till alla intresserade klienter genom att anropa funktionen NotifyWinEvent. Funktionsanropet innehåller information som identifierar vilken typ av händelse som inträffade och det användargränssnittselement som händelsen gäller för. Klienter kan använda den här informationen för att hämta ett IAccessible- objekt för användargränssnittselementet och samla in mer information.

Om du till exempel vill meddela klienter att en kontrolls namn har ändrats anropar en server NotifyWinEvent och skickar EVENT_OBJECT_NAMECHANGE i händelseparametern. Systemet svarar genom att avgöra vilka klienter som har registrerat sig för att ta emot den specifika händelsen och anropar deras registrerade återanropsfunktion. Om inga klienter har registrerat sig för händelsen är serverns anrop till NotifyWinEvent jämförbart med en "ingen åtgärd" och prestandapåverkan är försumbar.

Servrar anropar NotifyWinEvent för att meddela händelsen till systemet när händelsen har inträffat. De får aldrig meddela systemet om en händelse innan händelsen inträffar.

För att meddelas om händelser registrerar klienter återanropsfunktioner med hjälp av SetWinEventHook. Klienterna ställer in en enda hook-funktion för alla möjliga händelser eller flera krokfunktioner för diskreta händelseintervall. Mer information finns i Registrera en hook-funktion.

När Microsoft Active Accessibility meddelas om en händelse anropas alla hook-funktioner som har registrerats för den händelsen och parametrarna från NotifyWinEventskickas vidare.