Klient-/serverkommunikation
Mekanismen WinEvents är ett sätt för servrar att enkelt kommunicera med Microsoft Active Accessibility-klienter. Klienter samlar ofta in information genom att reagera på WinEvents (till exempel efter fokus), men de kan när som helst begära information från en server.
För att begära information om ett tillgängligt objekt som genererar en WinEvent måste en klient bearbeta händelsen och upprätta en anslutning till det relevanta tillgängliga objektet. För att göra detta utför klienten följande sex steg:
- En server anropar NotifyWinEvent för att generera ett WinEvent-meddelande för varje ändring av användargränssnittselementen.
- WinEvent-hanteringskoden i USER avgör om några klientprogram har registrerat en WinEvent-hook-funktion med SetWinEventHook och anropar den registrerade återanropsfunktionen.
- I sin återanropsfunktion begär klienten åtkomst till objektet som genererade händelsen genom att anropa AccessibleObjectFromEvent eller andra tillgängliga objekthämtningsfunktioner. Mer information finns i Hämta ett IAccessible-objekt.
- Det här API:et för Microsoft Active Accessibility skickar ett WM_GETOBJECT meddelande till serverprogrammet för att hämta det tillgängliga objektet.
- Som svar på WM_GETOBJECTreturnerar serverprogrammet antingen noll eller returnerar ett värde som fungerar som en engångsreferens till objektet som genererade händelsen.
- Om servern returnerar noll skapar Microsoft Active Accessibility ett proxyobjekt och ger dess adress till klienten. Annars använder Microsoft Active Accessibility den här referensen för att hämta adressen för ett objektgränssnitt, till exempel IAccessible eller IDispatchoch ger den adressen till klienten.
När klienten har en gränssnittsadress kan den anropa IAccessible egenskaper och metoder för det tillgängliga objektet för att hämta information.
I det här avsnittet