System\Windows\Forms\Accessibility\AccessibleObject.cs (119)
107private protected static VARIANT CHILDID_SELF { get; } = (VARIANT)(int)PInvoke.CHILDID_SELF;
213/// Determines if <see cref="GetKeyboardShortcutInternal(VARIANT)"/> can be called without calling <see cref="KeyboardShortcut"/>
225internal virtual BSTR GetKeyboardShortcutInternal(VARIANT childID) => SystemIAccessible.TryGetKeyboardShortcut(childID);
403/// Mechanism for overriding default <see cref="UIA.IAccessible.accNavigate(int, VARIANT, VARIANT*)"/>
447private VARIANT GetSystemIAccessibleFocus()
452return VARIANT.Empty;
455result = accessible.Value->get_accFocus(out VARIANT focus);
459return VARIANT.Empty;
515private VARIANT TryGetSystemIAccessibleSelection()
520return VARIANT.Empty;
523result = accessible.Value->get_accSelection(out VARIANT selection);
527return VARIANT.Empty;
558result = accessible.Value->accHitTest(x, y, out VARIANT child);
604/// element in the form of a <see cref="VARIANT"/>. See
606/// which outlines how the <see cref="VARIANT"/> should be defined for each <see cref="UIA_PROPERTY_ID"/>
610/// <returns>The requested value if supported or <see cref="VARIANT.Empty"/> if it is not.</returns>
611internal virtual VARIANT GetPropertyValue(UIA_PROPERTY_ID propertyID) =>
614UIA_PROPERTY_ID.UIA_AccessKeyPropertyId => (VARIANT)(KeyboardShortcut ?? string.Empty),
615UIA_PROPERTY_ID.UIA_AutomationIdPropertyId => AutomationId is null ? VARIANT.Empty : (VARIANT)AutomationId,
617UIA_PROPERTY_ID.UIA_FrameworkIdPropertyId => (VARIANT)"WinForm",
618UIA_PROPERTY_ID.UIA_IsExpandCollapsePatternAvailablePropertyId => (VARIANT)IsPatternSupported(UIA_PATTERN_ID.UIA_ExpandCollapsePatternId),
619UIA_PROPERTY_ID.UIA_IsGridItemPatternAvailablePropertyId => (VARIANT)IsPatternSupported(UIA_PATTERN_ID.UIA_GridItemPatternId),
620UIA_PROPERTY_ID.UIA_IsGridPatternAvailablePropertyId => (VARIANT)IsPatternSupported(UIA_PATTERN_ID.UIA_GridPatternId),
621UIA_PROPERTY_ID.UIA_IsInvokePatternAvailablePropertyId => (VARIANT)IsInvokePatternAvailable,
622UIA_PROPERTY_ID.UIA_IsLegacyIAccessiblePatternAvailablePropertyId => (VARIANT)IsPatternSupported(UIA_PATTERN_ID.UIA_LegacyIAccessiblePatternId),
623UIA_PROPERTY_ID.UIA_IsMultipleViewPatternAvailablePropertyId => (VARIANT)IsPatternSupported(UIA_PATTERN_ID.UIA_MultipleViewPatternId),
624UIA_PROPERTY_ID.UIA_IsOffscreenPropertyId => (VARIANT)((State & AccessibleStates.Offscreen) == AccessibleStates.Offscreen),
625UIA_PROPERTY_ID.UIA_IsPasswordPropertyId => VARIANT.False,
626UIA_PROPERTY_ID.UIA_IsScrollItemPatternAvailablePropertyId => (VARIANT)IsPatternSupported(UIA_PATTERN_ID.UIA_ScrollItemPatternId),
627UIA_PROPERTY_ID.UIA_IsScrollPatternAvailablePropertyId => (VARIANT)IsPatternSupported(UIA_PATTERN_ID.UIA_ScrollPatternId),
628UIA_PROPERTY_ID.UIA_IsSelectionItemPatternAvailablePropertyId => (VARIANT)IsPatternSupported(UIA_PATTERN_ID.UIA_SelectionItemPatternId),
629UIA_PROPERTY_ID.UIA_IsSelectionPatternAvailablePropertyId => (VARIANT)IsPatternSupported(UIA_PATTERN_ID.UIA_SelectionPatternId),
630UIA_PROPERTY_ID.UIA_IsTableItemPatternAvailablePropertyId => (VARIANT)IsPatternSupported(UIA_PATTERN_ID.UIA_TableItemPatternId),
631UIA_PROPERTY_ID.UIA_IsTablePatternAvailablePropertyId => (VARIANT)IsPatternSupported(UIA_PATTERN_ID.UIA_TablePatternId),
632UIA_PROPERTY_ID.UIA_IsTextPattern2AvailablePropertyId => (VARIANT)IsPatternSupported(UIA_PATTERN_ID.UIA_TextPattern2Id),
633UIA_PROPERTY_ID.UIA_IsTextPatternAvailablePropertyId => (VARIANT)IsPatternSupported(UIA_PATTERN_ID.UIA_TextPatternId),
634UIA_PROPERTY_ID.UIA_IsTogglePatternAvailablePropertyId => (VARIANT)IsPatternSupported(UIA_PATTERN_ID.UIA_TogglePatternId),
635UIA_PROPERTY_ID.UIA_IsValuePatternAvailablePropertyId => (VARIANT)IsPatternSupported(UIA_PATTERN_ID.UIA_ValuePatternId),
636UIA_PROPERTY_ID.UIA_HelpTextPropertyId => (VARIANT)(Help ?? string.Empty),
637UIA_PROPERTY_ID.UIA_LegacyIAccessibleDefaultActionPropertyId => !string.IsNullOrEmpty(DefaultAction) ? (VARIANT)DefaultAction : VARIANT.Empty,
638UIA_PROPERTY_ID.UIA_LegacyIAccessibleNamePropertyId => !string.IsNullOrEmpty(Name) ? (VARIANT)Name : VARIANT.Empty,
639UIA_PROPERTY_ID.UIA_LegacyIAccessibleRolePropertyId => (VARIANT)(int)Role,
640UIA_PROPERTY_ID.UIA_LegacyIAccessibleStatePropertyId => (VARIANT)(int)State,
641UIA_PROPERTY_ID.UIA_NamePropertyId => Name is null ? VARIANT.Empty : (VARIANT)Name,
642UIA_PROPERTY_ID.UIA_RuntimeIdPropertyId => (VARIANT)new SafeArrayScope<int>(RuntimeId),
643UIA_PROPERTY_ID.UIA_SelectionCanSelectMultiplePropertyId => (VARIANT)CanSelectMultiple,
644UIA_PROPERTY_ID.UIA_SelectionIsSelectionRequiredPropertyId => (VARIANT)IsSelectionRequired,
645UIA_PROPERTY_ID.UIA_ValueValuePropertyId => !string.IsNullOrEmpty(Value) ? (VARIANT)Value : VARIANT.Empty,
646_ => VARIANT.Empty
1007HRESULT IRawElementProviderSimple.Interface.GetPropertyValue(UIA_PROPERTY_ID propertyId, VARIANT* pRetVal)
1014VARIANT result = GetPropertyValue(propertyId);
1574HRESULT UIA.IAccessible.Interface.accDoDefaultAction(VARIANT varChild)
1603private static VARIANT ChildIdToVARIANT(object childId)
1607return (VARIANT)integer;
1612return VARIANT.Empty;
1625return VARIANT.Empty;
1630VARIANT result = default;
1635HRESULT UIA.IAccessible.Interface.accHitTest(int xLeft, int yTop, VARIANT* pvarChild)
1671*pvarChild = VARIANT.Empty;
1685HRESULT UIA.IAccessible.Interface.accLocation(int* pxLeft, int* pyTop, int* pcxWidth, int* pcyHeight, VARIANT varChild)
1732using VARIANT result = default;
1737HRESULT UIA.IAccessible.Interface.accNavigate(int navDir, VARIANT varStart, VARIANT* pvarEndUpAt)
1775*pvarEndUpAt = VARIANT.Empty;
1788HRESULT UIA.IAccessible.Interface.accSelect(int flagsSelect, VARIANT varChild)
1829result = accessible.Value->accDoDefaultAction((VARIANT)(int)PInvoke.CHILDID_SELF);
1839HRESULT UIA.IAccessible.Interface.get_accChild(VARIANT varChild, IDispatch** ppdispChild)
1939HRESULT UIA.IAccessible.Interface.get_accDefaultAction(VARIANT varChild, BSTR* pszDefaultAction)
1979HRESULT UIA.IAccessible.Interface.get_accDescription(VARIANT varChild, BSTR* pszDescription)
2033private AccessibleObject? GetAccessibleChild(VARIANT childID)
2053HRESULT UIA.IAccessible.Interface.get_accFocus(VARIANT* pvarChild)
2071HRESULT UIA.IAccessible.Interface.get_accHelp(VARIANT varChild, BSTR* pszHelp)
2112HRESULT UIA.IAccessible.Interface.get_accHelpTopic(BSTR* pszHelpFile, VARIANT varChild, int* pidTopic)
2161HRESULT UIA.IAccessible.Interface.get_accKeyboardShortcut(VARIANT varChild, BSTR* pszKeyboardShortcut)
2195HRESULT UIA.IAccessible.Interface.get_accName(VARIANT varChild, BSTR* pszName)
2281using VARIANT result = default;
2286HRESULT UIA.IAccessible.Interface.get_accRole(VARIANT varChild, VARIANT* pvarRole)
2298*pvarRole = (VARIANT)(int)Role;
2306*pvarRole = (VARIANT)(int)child.Role;
2314*pvarRole = count == 0 ? VARIANT.Empty : (VARIANT)(int)SystemIAccessible.TryGetRole(varChild);
2322VARIANT result = default;
2328HRESULT UIA.IAccessible.Interface.get_accSelection(VARIANT* pvarChildren)
2348*pvarChildren = VARIANT.Empty;
2357using VARIANT result = default;
2362HRESULT UIA.IAccessible.Interface.get_accState(VARIANT varChild, VARIANT* pvarState)
2374*pvarState = (VARIANT)(int)State;
2382*pvarState = (VARIANT)(int)child.State;
2388*pvarState = SystemIAccessible?.TryGetState(varChild) is { } state ? (VARIANT)(int)state : VARIANT.Empty;
2399HRESULT UIA.IAccessible.Interface.get_accValue(VARIANT varChild, BSTR* pszValue)
2435HRESULT UIA.IAccessible.Interface.put_accName(VARIANT varChild, BSTR szName)
2475HRESULT UIA.IAccessible.Interface.put_accValue(VARIANT varChild, BSTR szValue)
2584HRESULT IEnumVARIANT.Interface.Next(uint celt, VARIANT* rgVar, uint* pCeltFetched)
2632if (SysNavigate(navdir, (VARIANT)(int)PInvoke.CHILDID_SELF, out AccessibleObject? accessibleObject))
2638result = accessible.Value->accNavigate((int)navdir, CHILDID_SELF, out VARIANT endUpAt);
2655private VARIANT AsChildIdVariant(AccessibleObject? obj)
2660return (VARIANT)(int)PInvoke.CHILDID_SELF;
2665return VARIANT.Empty;
2782/// Called prior to calling <see cref="UIA.IAccessible.get_accName(VARIANT, BSTR*)"/> on the 'inner' system
2786private bool SysNavigate(AccessibleNavigation direction, VARIANT childID, out AccessibleObject? accessibleObject)
2803private static bool IsValidSelfChildID(VARIANT childID) =>
2809/// <inheritdoc cref="IsValidSelfChildID(VARIANT)"/>
2815/// where the additional terms is to be respected alongside <see cref="IsValidSelfChildID(VARIANT)"/>.
2818internal virtual bool IsValidSelfChildIDAdditionalCheck(VARIANT childId) => false;
2828private AccessibleObject? TryGetAccessibleObject(VARIANT variant)
3245internal virtual bool RaiseAutomationPropertyChangedEvent(UIA_PROPERTY_ID propertyId, VARIANT oldValue, VARIANT newValue)
3324VARIANT* pVarResult,
3337VARIANT* pvarRes,
System\Windows\Forms\Accessibility\AccessibleObject.EnumVariantObject.cs (5)
75HRESULT IEnumVARIANT.Interface.Next(uint celt, VARIANT* rgVar, uint* pCeltFetched)
124private unsafe void NextFromSystem(uint celt, VARIANT* rgVar, uint* pCeltFetched)
158private unsafe void NextFromSystemReordered(uint celt, VARIANT* rgVar, uint* pCeltFetched, int[] newOrder)
193private unsafe void NextFromChildCollection(uint celt, VARIANT* rgVar, uint* pCeltFetched, int childCount)
201rgVar[i] = (VARIANT)(int)_currentChild;
System\Windows\Forms\Accessibility\AccessibleObjectExtensions.cs (26)
24=> agile.TryGetLocation((VARIANT)child);
26public static Rectangle TryGetLocation(this AgileComPointer<IAccessible>? agile, VARIANT child)
49=> agile.TryGetDefaultAction((VARIANT)child);
51public static BSTR TryGetDefaultAction(this AgileComPointer<IAccessible>? agile, VARIANT child)
69=> agile.TryDoDefaultAction((VARIANT)child);
71public static void TryDoDefaultAction(this AgileComPointer<IAccessible>? agile, VARIANT child)
83agile.TryGetDescription((VARIANT)child);
85public static BSTR TryGetDescription(this AgileComPointer<IAccessible>? agile, VARIANT child)
103=> agile.TryGetHelp((VARIANT)child);
105public static BSTR TryGetHelp(this AgileComPointer<IAccessible>? agile, VARIANT child)
123=> agile.TryGetKeyboardShortcut((VARIANT)child);
125public static BSTR TryGetKeyboardShortcut(this AgileComPointer<IAccessible>? agile, VARIANT child)
143=> agile.TryGetName((VARIANT)child);
145public static BSTR TryGetName(this AgileComPointer<IAccessible>? agile, VARIANT child)
160public static void TrySetName(this AgileComPointer<IAccessible>? agile, VARIANT child, BSTR name)
182=> agile.TryGetRole((VARIANT)child);
184public static AccessibleRole TryGetRole(this AgileComPointer<IAccessible>? agile, VARIANT child)
192using VARIANT role = default;
201=> agile.TryGetState((VARIANT)child);
203public static AccessibleStates TryGetState(this AgileComPointer<IAccessible>? agile, VARIANT child)
211using VARIANT state = default;
221public static BSTR TryGetValue(this AgileComPointer<IAccessible>? agile, VARIANT child)
238public static void TrySetValue(this AgileComPointer<IAccessible>? agile, VARIANT child, BSTR value)
258public static (int topic, BSTR helpFile) TryGetHelpTopic(this AgileComPointer<IAccessible>? agile, VARIANT child)
276=> agile.TrySelect(flags, (VARIANT)child);
278public static void TrySelect(this AgileComPointer<IAccessible>? agile, AccessibleSelection flags, VARIANT child)
System\Windows\Forms\Controls\WebBrowser\WebBrowser.cs (18)
816webBrowser2.Value->ExecWB(OLECMDID.OLECMDID_PRINT, OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, (VARIANT*)default, default).ThrowOnFailure();
854VARIANT level = (VARIANT)(uint)opt;
905webBrowser2.Value->ExecWB(OLECMDID.OLECMDID_PAGESETUP, OLECMDEXECOPT.OLECMDEXECOPT_PROMPTUSER, (VARIANT*)default, default).ThrowOnFailure();
921webBrowser2.Value->ExecWB(OLECMDID.OLECMDID_PRINT, OLECMDEXECOPT.OLECMDEXECOPT_PROMPTUSER, (VARIANT*)default, default).ThrowOnFailure();
936webBrowser2.Value->ExecWB(OLECMDID.OLECMDID_PRINTPREVIEW, OLECMDEXECOPT.OLECMDEXECOPT_PROMPTUSER, (VARIANT*)default, default).ThrowOnFailure();
952webBrowser2.Value->ExecWB(OLECMDID.OLECMDID_PROPERTIES, OLECMDEXECOPT.OLECMDEXECOPT_PROMPTUSER, (VARIANT*)default, default).ThrowOnFailure();
968webBrowser2.Value->ExecWB(OLECMDID.OLECMDID_SAVEAS, OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT, (VARIANT*)default, default).ThrowOnFailure();
1312using var variantUrlString = (VARIANT)urlString;
1313var variantFlags = (VARIANT)(newWindow ? 1 : 0);
1314using var variantTargetFrameName = VARIANT.FromObject(targetFrameName);
1315using var variantPostData = VARIANT.FromObject(postData);
1316using var variantHeaders = VARIANT.FromObject(headers);