Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / UIAutomation / UIAutomationProvider / System / Windows / Automation / Provider / AutomationInteropProvider.cs / 1 / AutomationInteropProvider.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Provides functionality that Win32/Avalon servers need (non-Avalon specific) // // History: // 06/02/2003 : BrendanM Ported to WCP // //--------------------------------------------------------------------------- // PRESHARP: In order to avoid generating warnings about unkown message numbers and unknown pragmas. #pragma warning disable 1634, 1691 using System; using System.Windows.Automation; using MS.Internal.Automation; namespace System.Windows.Automation.Provider { ////// Class containing methods used by Win32 Automation implementations /// #if (INTERNAL_COMPILE) internal static class AutomationInteropProvider #else public static class AutomationInteropProvider #endif { //----------------------------------------------------- // // Public Constants & readonly Fields // //----------------------------------------------------- #region Public Constants & readonly Fields ///WM_GETOBJECT lParam value indicating that server should return a reference to the root RawElementProvider public const int RootObjectId = -25; ///Maximum number of events to send before batching public const int InvalidateLimit = 20; ///When returned as the first element of IRawElementProviderFragment.GetRuntimeId(), indicates /// that the ID is partial and should be appended to the ID provided by the base provider. Typically /// only used by Win32 proxies public const int AppendRuntimeId = 3; #endregion Public Constants & readonly Fields //------------------------------------------------------ // // Public Methods // //----------------------------------------------------- #region Public Methods ////// Servers that are slotting into the HWND tree can use this to get a base implementation. /// /// HWND that server is slotting in over ///base raw element for specified window public static IRawElementProviderSimple HostProviderFromHandle ( IntPtr hwnd ) { ValidateArgument(hwnd != IntPtr.Zero, SRID.HwndMustBeNonNULL); return UiaCoreProviderApi.UiaHostProviderFromHwnd(hwnd); } ////// Server uses this to return an element in response to WM_GETOBJECT. /// /// hwnd from the WM_GETOBJECT message /// wParam from the WM_GETOBJECT message /// lParam from the WM_GETOBJECT message /// element to return ///Server should return the return value as the lresult return value to the WM_GETOBJECT windows message public static IntPtr ReturnRawElementProvider (IntPtr hwnd, IntPtr wParam, IntPtr lParam, IRawElementProviderSimple el ) { ValidateArgument( hwnd != IntPtr.Zero, SRID.HwndMustBeNonNULL ); ValidateArgumentNonNull(el, "el" ); return UiaCoreProviderApi.UiaReturnRawElementProvider(hwnd, wParam, lParam, el); } ////// Called by a server to determine if there are any listeners for events. /// public static bool ClientsAreListening { get { return UiaCoreProviderApi.UiaClientsAreListening(); } } ////// Called by a server to notify the UIAccess server of a AutomationPropertyChangedEvent event. /// /// The actual server-side element associated with this event. /// Contains information about the property that changed. public static void RaiseAutomationPropertyChangedEvent(IRawElementProviderSimple element, AutomationPropertyChangedEventArgs e) { ValidateArgumentNonNull(element, "element"); ValidateArgumentNonNull(e, "e"); // PRESHARP will flag this as warning 56506/6506:Parameter 'e' to this public method must be validated: A null-dereference can occur here. // False positive, e is checked, see above #pragma warning suppress 6506 UiaCoreProviderApi.UiaRaiseAutomationPropertyChangedEvent(element, e.Property.Id, e.OldValue, e.NewValue); } ////// Called to notify listeners of a pattern or custom event. This could could be called by a server implementation or by a proxy's event /// translator. /// /// An AutomationEvent representing this event. /// The actual server-side element associated with this event. /// Contains information about the event (may be null). public static void RaiseAutomationEvent(AutomationEvent eventId, IRawElementProviderSimple provider, AutomationEventArgs e) { ValidateArgumentNonNull(eventId, "eventId"); ValidateArgumentNonNull(provider, "provider"); ValidateArgumentNonNull(e, "e"); // PRESHARP will flag this as warning 56506/6506:Parameter 'e' to this public method must be validated: A null-dereference can occur here. // False positive, e is checked, see above #pragma warning suppress 6506 if (e.EventId == AutomationElementIdentifiers.AsyncContentLoadedEvent) { AsyncContentLoadedEventArgs asyncArgs = e as AsyncContentLoadedEventArgs; if(asyncArgs == null) ThrowInvalidArgument("e"); UiaCoreProviderApi.UiaRaiseAsyncContentLoadedEvent(provider, asyncArgs.AsyncContentLoadedState, asyncArgs.PercentComplete); return; } // PRESHARP will flag this as warning 56506/6506:Parameter 'e' to this public method must be validated: A null-dereference can occur here. // False positive, e is checked, see above #pragma warning suppress 6506 if (e.EventId == WindowPatternIdentifiers.WindowClosedEvent && !(e is WindowClosedEventArgs)) ThrowInvalidArgument("e"); // fire to all clients // PRESHARP will flag this as warning 56506/6506:Parameter 'eventId' to this public method must be validated: A null-dereference can occur here. // False positive, eventId is checked, see above #pragma warning suppress 6506 UiaCoreProviderApi.UiaRaiseAutomationEvent(provider, eventId.Id); } ////// Called by a server to notify the UIAccess server of a tree change event. /// /// The actual server-side element associated with this event. /// Contains information about the event. public static void RaiseStructureChangedEvent(IRawElementProviderSimple provider, StructureChangedEventArgs e) { ValidateArgumentNonNull(provider, "provider"); ValidateArgumentNonNull(e, "e"); // PRESHARP will flag this as warning 56506/6506:Parameter 'e' to this public method must be validated: A null-dereference can occur here. // False positive, e is checked, see above #pragma warning suppress 6506 UiaCoreProviderApi.UiaRaiseStructureChangedEvent(provider, e.StructureChangeType, e.GetRuntimeId()); } #endregion Public Methods //------------------------------------------------------ // // Private Methods // //------------------------------------------------------ #region Private Methods // Check that specified argument is non-null, if so, throw exception private static void ValidateArgumentNonNull(object obj, string argName) { if (obj == null) { throw new ArgumentNullException(argName); } } // Throw an argument Exception with a generic error private static void ThrowInvalidArgument(string argName) { throw new ArgumentException(SR.Get(SRID.GenericInvalidArgument, argName)); } // Check that specified condition is true; if not, throw exception private static void ValidateArgument(bool cond, string reason) { if (!cond) { throw new ArgumentException(SR.Get(reason)); } } #endregion Private Methods } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Provides functionality that Win32/Avalon servers need (non-Avalon specific) // // History: // 06/02/2003 : BrendanM Ported to WCP // //--------------------------------------------------------------------------- // PRESHARP: In order to avoid generating warnings about unkown message numbers and unknown pragmas. #pragma warning disable 1634, 1691 using System; using System.Windows.Automation; using MS.Internal.Automation; namespace System.Windows.Automation.Provider { ////// Class containing methods used by Win32 Automation implementations /// #if (INTERNAL_COMPILE) internal static class AutomationInteropProvider #else public static class AutomationInteropProvider #endif { //----------------------------------------------------- // // Public Constants & readonly Fields // //----------------------------------------------------- #region Public Constants & readonly Fields ///WM_GETOBJECT lParam value indicating that server should return a reference to the root RawElementProvider public const int RootObjectId = -25; ///Maximum number of events to send before batching public const int InvalidateLimit = 20; ///When returned as the first element of IRawElementProviderFragment.GetRuntimeId(), indicates /// that the ID is partial and should be appended to the ID provided by the base provider. Typically /// only used by Win32 proxies public const int AppendRuntimeId = 3; #endregion Public Constants & readonly Fields //------------------------------------------------------ // // Public Methods // //----------------------------------------------------- #region Public Methods ////// Servers that are slotting into the HWND tree can use this to get a base implementation. /// /// HWND that server is slotting in over ///base raw element for specified window public static IRawElementProviderSimple HostProviderFromHandle ( IntPtr hwnd ) { ValidateArgument(hwnd != IntPtr.Zero, SRID.HwndMustBeNonNULL); return UiaCoreProviderApi.UiaHostProviderFromHwnd(hwnd); } ////// Server uses this to return an element in response to WM_GETOBJECT. /// /// hwnd from the WM_GETOBJECT message /// wParam from the WM_GETOBJECT message /// lParam from the WM_GETOBJECT message /// element to return ///Server should return the return value as the lresult return value to the WM_GETOBJECT windows message public static IntPtr ReturnRawElementProvider (IntPtr hwnd, IntPtr wParam, IntPtr lParam, IRawElementProviderSimple el ) { ValidateArgument( hwnd != IntPtr.Zero, SRID.HwndMustBeNonNULL ); ValidateArgumentNonNull(el, "el" ); return UiaCoreProviderApi.UiaReturnRawElementProvider(hwnd, wParam, lParam, el); } ////// Called by a server to determine if there are any listeners for events. /// public static bool ClientsAreListening { get { return UiaCoreProviderApi.UiaClientsAreListening(); } } ////// Called by a server to notify the UIAccess server of a AutomationPropertyChangedEvent event. /// /// The actual server-side element associated with this event. /// Contains information about the property that changed. public static void RaiseAutomationPropertyChangedEvent(IRawElementProviderSimple element, AutomationPropertyChangedEventArgs e) { ValidateArgumentNonNull(element, "element"); ValidateArgumentNonNull(e, "e"); // PRESHARP will flag this as warning 56506/6506:Parameter 'e' to this public method must be validated: A null-dereference can occur here. // False positive, e is checked, see above #pragma warning suppress 6506 UiaCoreProviderApi.UiaRaiseAutomationPropertyChangedEvent(element, e.Property.Id, e.OldValue, e.NewValue); } ////// Called to notify listeners of a pattern or custom event. This could could be called by a server implementation or by a proxy's event /// translator. /// /// An AutomationEvent representing this event. /// The actual server-side element associated with this event. /// Contains information about the event (may be null). public static void RaiseAutomationEvent(AutomationEvent eventId, IRawElementProviderSimple provider, AutomationEventArgs e) { ValidateArgumentNonNull(eventId, "eventId"); ValidateArgumentNonNull(provider, "provider"); ValidateArgumentNonNull(e, "e"); // PRESHARP will flag this as warning 56506/6506:Parameter 'e' to this public method must be validated: A null-dereference can occur here. // False positive, e is checked, see above #pragma warning suppress 6506 if (e.EventId == AutomationElementIdentifiers.AsyncContentLoadedEvent) { AsyncContentLoadedEventArgs asyncArgs = e as AsyncContentLoadedEventArgs; if(asyncArgs == null) ThrowInvalidArgument("e"); UiaCoreProviderApi.UiaRaiseAsyncContentLoadedEvent(provider, asyncArgs.AsyncContentLoadedState, asyncArgs.PercentComplete); return; } // PRESHARP will flag this as warning 56506/6506:Parameter 'e' to this public method must be validated: A null-dereference can occur here. // False positive, e is checked, see above #pragma warning suppress 6506 if (e.EventId == WindowPatternIdentifiers.WindowClosedEvent && !(e is WindowClosedEventArgs)) ThrowInvalidArgument("e"); // fire to all clients // PRESHARP will flag this as warning 56506/6506:Parameter 'eventId' to this public method must be validated: A null-dereference can occur here. // False positive, eventId is checked, see above #pragma warning suppress 6506 UiaCoreProviderApi.UiaRaiseAutomationEvent(provider, eventId.Id); } ////// Called by a server to notify the UIAccess server of a tree change event. /// /// The actual server-side element associated with this event. /// Contains information about the event. public static void RaiseStructureChangedEvent(IRawElementProviderSimple provider, StructureChangedEventArgs e) { ValidateArgumentNonNull(provider, "provider"); ValidateArgumentNonNull(e, "e"); // PRESHARP will flag this as warning 56506/6506:Parameter 'e' to this public method must be validated: A null-dereference can occur here. // False positive, e is checked, see above #pragma warning suppress 6506 UiaCoreProviderApi.UiaRaiseStructureChangedEvent(provider, e.StructureChangeType, e.GetRuntimeId()); } #endregion Public Methods //------------------------------------------------------ // // Private Methods // //------------------------------------------------------ #region Private Methods // Check that specified argument is non-null, if so, throw exception private static void ValidateArgumentNonNull(object obj, string argName) { if (obj == null) { throw new ArgumentNullException(argName); } } // Throw an argument Exception with a generic error private static void ThrowInvalidArgument(string argName) { throw new ArgumentException(SR.Get(SRID.GenericInvalidArgument, argName)); } // Check that specified condition is true; if not, throw exception private static void ValidateArgument(bool cond, string reason) { if (!cond) { throw new ArgumentException(SR.Get(reason)); } } #endregion Private Methods } } // 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
- DataGridTextColumn.cs
- ToolStripItemEventArgs.cs
- UpDownBase.cs
- MembershipSection.cs
- UnSafeCharBuffer.cs
- RuleProcessor.cs
- FixUp.cs
- ErrorWebPart.cs
- WebEventTraceProvider.cs
- OdbcConnectionString.cs
- LocatorPartList.cs
- ToolStripDropDownButton.cs
- SqlXml.cs
- TextMessageEncoder.cs
- FtpCachePolicyElement.cs
- PageParser.cs
- CmsInterop.cs
- PackageFilter.cs
- HuffCodec.cs
- BindingNavigator.cs
- StaticSiteMapProvider.cs
- CreateUserErrorEventArgs.cs
- HttpResponseHeader.cs
- ControlPersister.cs
- WindowsClientCredential.cs
- MimePart.cs
- SqlInfoMessageEvent.cs
- SafeSystemMetrics.cs
- NameValueConfigurationElement.cs
- TextSerializer.cs
- ModifiableIteratorCollection.cs
- RegexCode.cs
- EntityTypeBase.cs
- TextElementEditingBehaviorAttribute.cs
- XmlNodeComparer.cs
- SerializationHelper.cs
- SmiEventSink.cs
- UnicodeEncoding.cs
- XhtmlBasicPageAdapter.cs
- Positioning.cs
- EditorZoneAutoFormat.cs
- CodeLinePragma.cs
- StorageMappingItemLoader.cs
- EnumValidator.cs
- GlobalAllocSafeHandle.cs
- Light.cs
- MimeTypeMapper.cs
- EmptyElement.cs
- SQLSingle.cs
- DictionaryBase.cs
- AmbiguousMatchException.cs
- EntityTransaction.cs
- ColorConvertedBitmapExtension.cs
- ListViewSortEventArgs.cs
- ForeignKeyConstraint.cs
- BaseTemplateCodeDomTreeGenerator.cs
- rsa.cs
- TableRowGroupCollection.cs
- DataGridViewTopLeftHeaderCell.cs
- COM2PropertyDescriptor.cs
- BindingGroup.cs
- ImageListStreamer.cs
- RemotingConfigParser.cs
- GlobalEventManager.cs
- DataObjectPastingEventArgs.cs
- FixedBufferAttribute.cs
- HostExecutionContextManager.cs
- TextProperties.cs
- BitmapEffectOutputConnector.cs
- Pkcs7Signer.cs
- PrinterUnitConvert.cs
- TypeElementCollection.cs
- bindurihelper.cs
- FixedTextContainer.cs
- ListItemCollection.cs
- EdmScalarPropertyAttribute.cs
- PkcsMisc.cs
- OutputCacheProfile.cs
- sqlser.cs
- SemanticBasicElement.cs
- CheckBox.cs
- MaskedTextProvider.cs
- DataGridViewRowContextMenuStripNeededEventArgs.cs
- GPPOINT.cs
- AssociationSetEnd.cs
- PrintDialog.cs
- ObjectCloneHelper.cs
- AppSettingsSection.cs
- WriteableBitmap.cs
- WebBrowserBase.cs
- StylusShape.cs
- MetadataFile.cs
- ComplexBindingPropertiesAttribute.cs
- XPathExpr.cs
- DataGridViewTextBoxColumn.cs
- SHA1.cs
- QueryStringConverter.cs
- PersonalizationStateInfo.cs
- FilterQuery.cs
- WindowsIdentity.cs