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
- DataTableMapping.cs
- InteropAutomationProvider.cs
- XmlIlGenerator.cs
- CorrelationManager.cs
- DataTable.cs
- XmlLanguage.cs
- CodeDomConfigurationHandler.cs
- CheckPair.cs
- UserMapPath.cs
- SchemaAttDef.cs
- OdbcFactory.cs
- MdImport.cs
- Stylesheet.cs
- WindowsTokenRoleProvider.cs
- CustomAttributeFormatException.cs
- Mappings.cs
- EventLogEntryCollection.cs
- EncoderParameters.cs
- DefaultValueAttribute.cs
- IImplicitResourceProvider.cs
- PassportAuthentication.cs
- GridItemProviderWrapper.cs
- InvalidAsynchronousStateException.cs
- XmlQueryOutput.cs
- PlanCompiler.cs
- RectangleHotSpot.cs
- Border.cs
- DbMetaDataFactory.cs
- PointAnimation.cs
- SpeechRecognitionEngine.cs
- ThreadPool.cs
- Bitmap.cs
- TypedReference.cs
- Stylus.cs
- DataGridLengthConverter.cs
- MostlySingletonList.cs
- XslException.cs
- NamespaceListProperty.cs
- FontFamilyIdentifier.cs
- DataSpaceManager.cs
- OdbcInfoMessageEvent.cs
- Highlights.cs
- ImageButton.cs
- KeyProperty.cs
- XamlPointCollectionSerializer.cs
- BooleanToVisibilityConverter.cs
- DesigntimeLicenseContextSerializer.cs
- XmlSchemaValidationException.cs
- BatchServiceHost.cs
- _DomainName.cs
- HostedNamedPipeTransportManager.cs
- Utils.cs
- SqlCacheDependencyDatabaseCollection.cs
- DbProviderSpecificTypePropertyAttribute.cs
- DoubleCollection.cs
- ColorTranslator.cs
- RequestCacheEntry.cs
- SqlDataSourceAdvancedOptionsForm.cs
- ContractComponent.cs
- SchemaReference.cs
- EventRoute.cs
- AppDomainFactory.cs
- NotEqual.cs
- EventMappingSettings.cs
- X509UI.cs
- BasicHttpMessageSecurity.cs
- DoubleAnimationUsingPath.cs
- PassportAuthentication.cs
- Tuple.cs
- DataMisalignedException.cs
- SessionStateModule.cs
- RoleGroup.cs
- SynchronizationHandlesCodeDomSerializer.cs
- TextBlockAutomationPeer.cs
- Token.cs
- CodeRemoveEventStatement.cs
- RawMouseInputReport.cs
- DataGridTableCollection.cs
- SHA256.cs
- PartitionResolver.cs
- GB18030Encoding.cs
- WebPartManagerInternals.cs
- WsdlBuildProvider.cs
- Queue.cs
- StrokeCollection.cs
- SkinIDTypeConverter.cs
- CounterSample.cs
- TextTrailingWordEllipsis.cs
- AesManaged.cs
- SoapInteropTypes.cs
- templategroup.cs
- BinaryCommonClasses.cs
- Route.cs
- Exceptions.cs
- DetailsViewDeleteEventArgs.cs
- DataGridViewCellCancelEventArgs.cs
- StrokeCollectionConverter.cs
- DataMember.cs
- LocalsItemDescription.cs
- PtsContext.cs