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
- StorageEntityTypeMapping.cs
- X500Name.cs
- ValueUtilsSmi.cs
- TypeViewSchema.cs
- localization.cs
- MappingMetadataHelper.cs
- BindingExpressionBase.cs
- CqlGenerator.cs
- ListControlDataBindingHandler.cs
- ProfileInfo.cs
- DockingAttribute.cs
- DataGridPageChangedEventArgs.cs
- HTMLTagNameToTypeMapper.cs
- BooleanFunctions.cs
- PeerNameResolver.cs
- UntypedNullExpression.cs
- ElementsClipboardData.cs
- BezierSegment.cs
- Int32Collection.cs
- RuntimeArgumentHandle.cs
- VisualCollection.cs
- SetStateDesigner.cs
- ButtonPopupAdapter.cs
- TypeHelpers.cs
- HandlerFactoryWrapper.cs
- ToolStripComboBox.cs
- CLRBindingWorker.cs
- METAHEADER.cs
- MailWebEventProvider.cs
- FieldAccessException.cs
- DefaultAssemblyResolver.cs
- GridView.cs
- MinMaxParagraphWidth.cs
- OleDbErrorCollection.cs
- TextInfo.cs
- OleDbPropertySetGuid.cs
- QueryTask.cs
- XmlValidatingReaderImpl.cs
- OleDbDataReader.cs
- DbConvert.cs
- SqlWebEventProvider.cs
- TextProviderWrapper.cs
- HttpDigestClientElement.cs
- SubqueryRules.cs
- PublisherMembershipCondition.cs
- EventWaitHandle.cs
- FixedFlowMap.cs
- StackSpiller.Bindings.cs
- TextBoxBase.cs
- OdbcFactory.cs
- SystemFonts.cs
- ReachPrintTicketSerializer.cs
- Preprocessor.cs
- CompilationPass2Task.cs
- SyndicationDeserializer.cs
- SqlProviderUtilities.cs
- ImplicitInputBrush.cs
- GetWinFXPath.cs
- DbTransaction.cs
- ExpandSegment.cs
- PathNode.cs
- ProtocolViolationException.cs
- SessionIDManager.cs
- StyleSelector.cs
- SqlTypeSystemProvider.cs
- GeneralTransform3D.cs
- keycontainerpermission.cs
- NativeMethods.cs
- CollectionChangedEventManager.cs
- DeferredReference.cs
- LogLogRecord.cs
- remotingproxy.cs
- DisplayNameAttribute.cs
- RectangleGeometry.cs
- ContainerParagraph.cs
- ProvidersHelper.cs
- ValidationHelper.cs
- ManualWorkflowSchedulerService.cs
- SqlRecordBuffer.cs
- StructuredTypeEmitter.cs
- Collection.cs
- Button.cs
- X509SecurityTokenProvider.cs
- XmlWhitespace.cs
- ItemList.cs
- XPathDocument.cs
- ListControl.cs
- SQLString.cs
- ScrollChrome.cs
- MobilePage.cs
- ResourceExpressionEditor.cs
- TextSpanModifier.cs
- TransactedBatchingBehavior.cs
- IndentTextWriter.cs
- PageAsyncTaskManager.cs
- MaskInputRejectedEventArgs.cs
- MarkupProperty.cs
- StylusPoint.cs
- BindingExpressionBase.cs
- TimeoutException.cs