internal InternalAccessibleObject(AccessibleObject accessibleImplemention) { publicIAccessible = accessibleImplemention; publicIEnumVariant = accessibleImplemention; publicIOleWindow = accessibleImplemention; publicIReflect = accessibleImplemention; publicIServiceProvider = accessibleImplemention; publicIAccessibleEx = accessibleImplemention; publicIRawElementProviderSimple = accessibleImplemention; publicIRawElementProviderFragment = accessibleImplemention; publicIRawElementProviderFragmentRoot = accessibleImplemention; publicIInvokeProvider = accessibleImplemention; publicIValueProvider = accessibleImplemention; publicIRangeValueProvider = accessibleImplemention; publicIExpandCollapseProvider = accessibleImplemention; publicIToggleProvider = accessibleImplemention; publicITableProvider = accessibleImplemention; publicITableItemProvider = accessibleImplemention; publicIGridProvider = accessibleImplemention; publicIGridItemProvider = accessibleImplemention; publicILegacyIAccessibleProvider = accessibleImplemention; publicISelectionProvider = accessibleImplemention; publicISelectionItemProvider = accessibleImplemention; publicIRawElementProviderHwndOverride = accessibleImplemention; }
internal InternalAccessibleObject(AccessibleObject accessibleImplemention) { // Get all the casts done here to catch any issues early publicIAccessible = (IAccessible) accessibleImplemention; publicIEnumVariant = (UnsafeNativeMethods.IEnumVariant) accessibleImplemention; publicIOleWindow = (UnsafeNativeMethods.IOleWindow) accessibleImplemention; publicIReflect = (IReflect) accessibleImplemention; // Note: Deliberately not holding onto AccessibleObject to enforce all access through the interfaces }
protected void UseStdAccessibleObjects(IntPtr handle, int objid) { // Get a standard accessible Object Guid IID_IAccessible = new Guid(NativeMethods.uuid_IAccessible); object acc = null; int result = UnsafeNativeMethods.CreateStdAccessibleObject( new HandleRef(this, handle), objid, ref IID_IAccessible, ref acc); // Get the IEnumVariant interface Guid IID_IEnumVariant = new Guid(NativeMethods.uuid_IEnumVariant); object en = null; result = UnsafeNativeMethods.CreateStdAccessibleObject( new HandleRef(this, handle), objid, ref IID_IEnumVariant, ref en); Debug.Assert(acc != null, "SystemIAccessible is null"); Debug.Assert(en != null, "SystemIEnumVariant is null"); if (acc != null || en != null) { systemIAccessible = (IAccessible)acc; systemIEnumVariant = (UnsafeNativeMethods.IEnumVariant)en; systemIOleWindow = acc as UnsafeNativeMethods.IOleWindow; } }