Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / MS / Internal / Automation / InteropAutomationProvider.cs / 1 / InteropAutomationProvider.cs
using System; using System.Windows; using System.Windows.Automation.Peers; using System.Windows.Automation.Provider; using System.Security; using System.Security.Permissions; using MS.Internal.PresentationCore; namespace MS.Internal.Automation { [FriendAccessAllowed] // Built into Core, also used by Framework. internal class InteropAutomationProvider: IRawElementProviderFragmentRoot { #region Constructors internal InteropAutomationProvider(HostedWindowWrapper wrapper, AutomationPeer parent) { if (wrapper == null) { throw new ArgumentNullException("wrapper"); } if (parent == null) { throw new ArgumentNullException("parent"); } _wrapper = wrapper; _parent = parent; } #endregion Constructors #region IRawElementProviderSimple /// ProviderOptions IRawElementProviderSimple.ProviderOptions { get { return ProviderOptions.ServerSideProvider | ProviderOptions.OverrideProvider; } } /// object IRawElementProviderSimple.GetPatternProvider(int patternId) { return null; } /// object IRawElementProviderSimple.GetPropertyValue(int propertyId) { return null; } ////// Critical - Calls critical HostedWindowWrapper.Handle. /// TreatAsSafe - The reason is described in the following comment by [....] /// HostProviderFromHandle is a public method the APTCA assembly UIAutomationProvider.dll; /// ...\windows\AccessibleTech\longhorn\Automation\UIAutomationProvider\System\Windows\Automation\Provider\AutomationInteropProvider.cs /// This calls through to an internal P/Invoke layer... /// ...\windows\AccessibleTech\longhorn\Automation\UIAutomationProvider\MS\Internal\Automation\UiaCoreProviderApi.cs /// Which P/Invokes to unmanaged UIAutomationCore.dll's UiaHostProviderFromHwnd API, /// ...\windows\AccessibleTech\longhorn\Automation\UnmanagedCore\UIAutomationCoreAPI.cpp /// Which checks the HWND with IsWindow, and returns a new MiniHwndProxy instance: /// ...\windows\AccessibleTech\longhorn\Automation\UnmanagedCore\MiniHwndProxy.cpp /// /// MiniHwndProxy does implement the IRawElementProviderSimple interface, but all methods /// return NULL or empty values; it does not expose any values or functionality through this. /// This object is designed to be an opaque cookie to contain the HWND so that only UIACore /// itself can access it. UIACore accesses the HWND by QI'ing for a private GUID, and then /// casting the returnd value to MiniHwndProxy, and calling a nonvirtual method to access a /// _hwnd field. While managed PT code maybe able to do a QI, the only way it could extract /// the _hwnd field would be by using unmanaged code. /// IRawElementProviderSimple IRawElementProviderSimple.HostRawElementProvider { [SecurityCritical, SecurityTreatAsSafe] get { return AutomationInteropProvider.HostProviderFromHandle(_wrapper.Handle); } } #endregion IRawElementProviderSimple #region IRawElementProviderFragment ////// TreatAsSafe - The reason this method can be treated as safe is because it yeilds information /// about the parent provider which can even otherwise be obtained by using public APIs such /// as UIElement.OnCreateAutomationPeer and AutomationProvider.ProviderFromPeer. /// IRawElementProviderFragment IRawElementProviderFragment.Navigate(NavigateDirection direction) { if (direction == NavigateDirection.Parent) { return (IRawElementProviderFragment)_parent.ProviderFromPeer(_parent); } return null; } /// int [] IRawElementProviderFragment.GetRuntimeId() { return null; } /// Rect IRawElementProviderFragment.BoundingRectangle { get { return Rect.Empty; } } /// IRawElementProviderSimple [] IRawElementProviderFragment.GetEmbeddedFragmentRoots() { return null; } /// void IRawElementProviderFragment.SetFocus() { throw new NotSupportedException(); } /// IRawElementProviderFragmentRoot IRawElementProviderFragment.FragmentRoot { get { return null; } } #endregion IRawElementProviderFragment #region IRawElementProviderFragmentRoot /// IRawElementProviderFragment IRawElementProviderFragmentRoot.ElementProviderFromPoint( double x, double y ) { return null; } /// IRawElementProviderFragment IRawElementProviderFragmentRoot.GetFocus() { return null; } #endregion IRawElementProviderFragmentRoot #region Data private HostedWindowWrapper _wrapper; private AutomationPeer _parent; #endregion Data } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Clipboard.cs
- TextFormattingConverter.cs
- AssemblyResourceLoader.cs
- InvalidEnumArgumentException.cs
- FunctionCommandText.cs
- PointLight.cs
- Thread.cs
- Group.cs
- HMACSHA1.cs
- SqlDependencyListener.cs
- SystemEvents.cs
- VisualStyleInformation.cs
- ClientCultureInfo.cs
- ServiceProviders.cs
- SelectedGridItemChangedEvent.cs
- DecodeHelper.cs
- HtmlGenericControl.cs
- WindowsListViewSubItem.cs
- ListBoxAutomationPeer.cs
- AsymmetricSignatureDeformatter.cs
- ExpressionVisitor.cs
- TriggerActionCollection.cs
- AttachmentService.cs
- ModelService.cs
- SqlDelegatedTransaction.cs
- UInt64.cs
- MetafileHeader.cs
- ComponentResourceManager.cs
- StateFinalizationDesigner.cs
- RectangleGeometry.cs
- ListControlConvertEventArgs.cs
- ReflectionPermission.cs
- ColorTransform.cs
- DtdParser.cs
- IPEndPoint.cs
- DataObjectSettingDataEventArgs.cs
- PathSegmentCollection.cs
- GeometryGroup.cs
- SelectionPatternIdentifiers.cs
- AccessKeyManager.cs
- EncoderParameter.cs
- FormatControl.cs
- PageCodeDomTreeGenerator.cs
- ContentPosition.cs
- DockEditor.cs
- SmtpNtlmAuthenticationModule.cs
- SafeProcessHandle.cs
- DesignSurfaceCollection.cs
- ClientBuildManager.cs
- COM2ExtendedTypeConverter.cs
- AttributeCollection.cs
- RSAOAEPKeyExchangeFormatter.cs
- ParamArrayAttribute.cs
- TableColumnCollection.cs
- Set.cs
- X509CertificateCollection.cs
- TypeUnloadedException.cs
- MultipleViewPatternIdentifiers.cs
- QueryContinueDragEventArgs.cs
- ComponentEvent.cs
- Context.cs
- PerformanceCounterPermissionEntryCollection.cs
- PolyQuadraticBezierSegment.cs
- WebPart.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- PersonalizablePropertyEntry.cs
- BooleanKeyFrameCollection.cs
- HttpCacheVaryByContentEncodings.cs
- ItemsPresenter.cs
- DataObjectFieldAttribute.cs
- GridViewRowEventArgs.cs
- SqlExpressionNullability.cs
- TTSEvent.cs
- MessageSecurityVersionConverter.cs
- _RegBlobWebProxyDataBuilder.cs
- DesignerDeviceConfig.cs
- ProcessThreadCollection.cs
- DataControlImageButton.cs
- CommonDialog.cs
- ProcessModule.cs
- Expressions.cs
- brushes.cs
- UnsafeNativeMethods.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- DesigntimeLicenseContext.cs
- LookupNode.cs
- ContentTextAutomationPeer.cs
- EntityDesignerUtils.cs
- XmlReflectionMember.cs
- UserPersonalizationStateInfo.cs
- OdbcParameter.cs
- URLMembershipCondition.cs
- _HeaderInfoTable.cs
- RuleConditionDialog.cs
- DataSetMappper.cs
- SiteOfOriginPart.cs
- TargetPerspective.cs
- AutomationPeer.cs
- TableCell.cs
- WebPermission.cs