public override UiaCore.ITextRangeProvider[]? GetVisibleRanges() { if (!_owningTextBoxBase.IsHandleCreated) { return(null); } GetVisibleRangePoints(out int start, out int end); var internalAccessibleObject = new InternalAccessibleObject(_owningTextBoxBase.AccessibilityObject); return(new UiaCore.ITextRangeProvider[] { new UiaTextRange(internalAccessibleObject, this, start, end) }); }
public override UiaCore.ITextRangeProvider[]? GetSelection() { if (!_owningTextBoxBase.IsHandleCreated) { return(null); } // First caret position of a selected text int start = 0; // Last caret position of a selected text int end = 0; // Returns info about the selected text range. // If there is no selection, start and end parameters are the position of the caret. SendMessageW(_owningTextBoxBase, (WM)EM.GETSEL, ref start, ref end); var internalAccessibleObject = new InternalAccessibleObject(_owningTextBoxBase.AccessibilityObject); return(new UiaCore.ITextRangeProvider[] { new UiaTextRange(internalAccessibleObject, this, start, end) }); }
public override UiaCore.ITextRangeProvider?GetCaretRange(out BOOL isActive) { isActive = BOOL.FALSE; if (!_owningComboBox.IsHandleCreated) { return(null); } object?hasKeyboardFocus = _owningComboBox.ChildEditAccessibleObject.GetPropertyValue(UiaCore.UIA.HasKeyboardFocusPropertyId); if (hasKeyboardFocus is true) { isActive = BOOL.TRUE; } var internalAccessibleObject = new InternalAccessibleObject(_owningComboBox.ChildEditAccessibleObject); return(new UiaTextRange(internalAccessibleObject, this, _owningComboBox.SelectionStart, _owningComboBox.SelectionStart)); }
private void WmGetObject(ref Message m) { Debug.WriteLineIf(CompModSwitches.MSAA.TraceInfo, "In WmGetObject, this = " + GetType().FullName + ", lParam = " + m.LParam.ToString()); if (m.Msg == (int)User32.WM.GETOBJECT && m.LParam == (IntPtr)NativeMethods.UiaRootObjectId) { // If the requested object identifier is UiaRootObjectId, // we should return an UI Automation provider using the UiaReturnRawElementProvider function. InternalAccessibleObject intAccessibleObject = new InternalAccessibleObject(AccessibilityObject); m.Result = UiaCore.UiaReturnRawElementProvider( new HandleRef(this, Handle), m.WParam, m.LParam, intAccessibleObject); return; } // some accessible object requested that we don't care about, so do default message processing DefWndProc(ref m); }
private void WmGetObject(ref Message m) { // See "How to Handle WM_GETOBJECT" in MSDN // if (NativeMethods.OBJID_CLIENT == unchecked((int)(long)m.LParam)) { // Get the IAccessible GUID // Guid IID_IAccessible = new Guid(NativeMethods.uuid_IAccessible); // Get an Lresult for the accessibility Object for this control // IntPtr punkAcc; try { AccessibleObject wfAccessibleObject = null; UnsafeNativeMethods.IAccessibleInternal iacc = null; if (_accessibilityObject == null) { IntSecurity.UnmanagedCode.Assert(); try { wfAccessibleObject = new ChildAccessibleObject(_owner, Handle); _accessibilityObject = new InternalAccessibleObject(wfAccessibleObject); } finally { CodeAccessPermission.RevertAssert(); } } iacc = (UnsafeNativeMethods.IAccessibleInternal)_accessibilityObject; // Obtain the Lresult // punkAcc = Marshal.GetIUnknownForObject(iacc); IntSecurity.UnmanagedCode.Assert(); try { m.Result = UnsafeNativeMethods.LresultFromObject(ref IID_IAccessible, m.WParam, new HandleRef(this, punkAcc)); } finally { CodeAccessPermission.RevertAssert(); Marshal.Release(punkAcc); } } catch (Exception e) { throw new InvalidOperationException(SR.GetString(SR.RichControlLresult), e); } } else { // m.lparam != OBJID_CLIENT, so do default message processing DefWndProc(ref m); } }
private void WmGetObject(ref Message m) { if (m.LParam == (IntPtr)NativeMethods.UiaRootObjectId) { AccessibleObject uiaProvider = GetChildAccessibleObject(_childWindowType); // If the requested object identifier is UiaRootObjectId, // we should return an UI Automation provider using the UiaReturnRawElementProvider function. InternalAccessibleObject internalAccessibleObject = new InternalAccessibleObject(uiaProvider); m.Result = UiaCore.UiaReturnRawElementProvider( new HandleRef(this, Handle), m.WParam, m.LParam, internalAccessibleObject); return; } // See "How to Handle WM_GETOBJECT" in MSDN // if (unchecked ((int)(long)m.LParam) == OBJID.CLIENT) { // Get the IAccessible GUID // Guid IID_IAccessible = new Guid(NativeMethods.uuid_IAccessible); // Get an Lresult for the accessibility Object for this control // IntPtr punkAcc; try { AccessibleObject wfAccessibleObject = null; UiaCore.IAccessibleInternal iacc = null; if (_accessibilityObject is null) { wfAccessibleObject = GetChildAccessibleObject(_childWindowType); _accessibilityObject = new InternalAccessibleObject(wfAccessibleObject); } iacc = (UiaCore.IAccessibleInternal)_accessibilityObject; // Obtain the Lresult // punkAcc = Marshal.GetIUnknownForObject(iacc); try { m.Result = Oleacc.LresultFromObject(ref IID_IAccessible, m.WParam, new HandleRef(this, punkAcc)); } finally { Marshal.Release(punkAcc); } } catch (Exception e) { throw new InvalidOperationException(SR.RichControlLresult, e); } } else { // m.lparam != OBJID_CLIENT, so do default message processing DefWndProc(ref m); } }
private void WmGetObject(ref Message m) { if (m.LParam == (IntPtr)NativeMethods.UiaRootObjectId && // Managed UIAutomation providers are supplied for child list windows but not for the child edit window. // Child list accessibility object provides all necessary patterns and UIAutomation notifications, // so there is no need to native provider supplement. // Child edit accessibility object has only partial support of edit box accessibility, most of the patterns // and notifications for child edit window are supplied by native providers, so here is no need to // override root UIA object for child edit window. (_childWindowType == ChildWindowType.ListBox || _childWindowType == ChildWindowType.DropDownList)) { AccessibleObject uiaProvider = GetChildAccessibleObject(_childWindowType); // If the requested object identifier is UiaRootObjectId, // we should return an UI Automation provider using the UiaReturnRawElementProvider function. InternalAccessibleObject internalAccessibleObject = new InternalAccessibleObject(uiaProvider); m.Result = UiaCore.UiaReturnRawElementProvider( new HandleRef(this, Handle), m.WParam, m.LParam, internalAccessibleObject); return; } // See "How to Handle WM_GETOBJECT" in MSDN // if (unchecked ((int)(long)m.LParam) == OBJID.CLIENT) { // Get the IAccessible GUID // Guid IID_IAccessible = new Guid(NativeMethods.uuid_IAccessible); // Get an Lresult for the accessibility Object for this control // IntPtr punkAcc; try { AccessibleObject wfAccessibleObject = null; UiaCore.IAccessibleInternal iacc = null; if (_accessibilityObject is null) { wfAccessibleObject = GetChildAccessibleObject(_childWindowType); _accessibilityObject = new InternalAccessibleObject(wfAccessibleObject); } iacc = (UiaCore.IAccessibleInternal)_accessibilityObject; // Obtain the Lresult // punkAcc = Marshal.GetIUnknownForObject(iacc); try { m.Result = Oleacc.LresultFromObject(ref IID_IAccessible, m.WParam, new HandleRef(this, punkAcc)); } finally { Marshal.Release(punkAcc); } } catch (Exception e) { throw new InvalidOperationException(SR.RichControlLresult, e); } } else { // m.lparam != OBJID_CLIENT, so do default message processing DefWndProc(ref m); } }
private void WmGetObject(ref Message m) { if (-4 == ((int) ((long) m.LParam))) { Guid refiid = new Guid("{618736E0-3C3D-11CF-810C-00AA00389B71}"); try { AccessibleObject accessibleImplemention = null; if (this._accessibilityObject == null) { System.Windows.Forms.IntSecurity.UnmanagedCode.Assert(); try { accessibleImplemention = new ComboBox.ChildAccessibleObject(this._owner, base.Handle); this._accessibilityObject = new InternalAccessibleObject(accessibleImplemention); } finally { CodeAccessPermission.RevertAssert(); } } IntPtr iUnknownForObject = Marshal.GetIUnknownForObject(this._accessibilityObject); System.Windows.Forms.IntSecurity.UnmanagedCode.Assert(); try { m.Result = System.Windows.Forms.UnsafeNativeMethods.LresultFromObject(ref refiid, m.WParam, new HandleRef(this, iUnknownForObject)); } finally { CodeAccessPermission.RevertAssert(); Marshal.Release(iUnknownForObject); } return; } catch (Exception exception) { throw new InvalidOperationException(System.Windows.Forms.SR.GetString("RichControlLresult"), exception); } } base.DefWndProc(ref m); }