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
- XsltArgumentList.cs
- FunctionParameter.cs
- AuthenticationModulesSection.cs
- RequestTimeoutManager.cs
- PerformanceCountersElement.cs
- TogglePattern.cs
- Track.cs
- DbMetaDataColumnNames.cs
- FromRequest.cs
- AsymmetricKeyExchangeFormatter.cs
- FrameworkElementAutomationPeer.cs
- QueryExpression.cs
- LowerCaseStringConverter.cs
- EventProviderWriter.cs
- ReadContentAsBinaryHelper.cs
- OperationAbortedException.cs
- StrictModeSecurityHeaderElementInferenceEngine.cs
- FixedSchema.cs
- EntityUtil.cs
- HwndTarget.cs
- PropertyRef.cs
- UnauthorizedWebPart.cs
- TypefaceMap.cs
- SqlClientWrapperSmiStream.cs
- XmlNamedNodeMap.cs
- WebExceptionStatus.cs
- StylusSystemGestureEventArgs.cs
- DbSourceCommand.cs
- FixedSOMTableRow.cs
- OdbcTransaction.cs
- EncoderReplacementFallback.cs
- OletxVolatileEnlistment.cs
- SQLByteStorage.cs
- WebPartEditorApplyVerb.cs
- DesignerContextDescriptor.cs
- AuthorizationSection.cs
- TextElementAutomationPeer.cs
- HTMLTagNameToTypeMapper.cs
- ObjectIDGenerator.cs
- OracleInfoMessageEventArgs.cs
- DependencyObjectPropertyDescriptor.cs
- ToolboxItem.cs
- SqlClientWrapperSmiStream.cs
- webbrowsersite.cs
- SimpleHandlerBuildProvider.cs
- XmlIncludeAttribute.cs
- DotExpr.cs
- UriTemplateTable.cs
- SymmetricAlgorithm.cs
- xml.cs
- DataSourceViewSchemaConverter.cs
- Timeline.cs
- DataRow.cs
- Point3DValueSerializer.cs
- FtpRequestCacheValidator.cs
- DataBinding.cs
- ObjectListItemCollection.cs
- SecurityTokenRequirement.cs
- DbModificationCommandTree.cs
- ExpressionBuilder.cs
- SessionStateItemCollection.cs
- DbDataAdapter.cs
- CharacterBufferReference.cs
- srgsitem.cs
- View.cs
- EditingCoordinator.cs
- MissingManifestResourceException.cs
- ADConnectionHelper.cs
- ScriptReferenceBase.cs
- AffineTransform3D.cs
- returneventsaver.cs
- DisposableCollectionWrapper.cs
- PropertiesTab.cs
- UnmanagedHandle.cs
- Stack.cs
- SafeLibraryHandle.cs
- NativeMethodsOther.cs
- SAPICategories.cs
- NativeMethods.cs
- Clause.cs
- ButtonFieldBase.cs
- GestureRecognitionResult.cs
- DiscoveryServiceExtension.cs
- FolderBrowserDialog.cs
- MouseWheelEventArgs.cs
- SystemInfo.cs
- MarkupCompiler.cs
- XmlMapping.cs
- CompModSwitches.cs
- EventsTab.cs
- ModelItemExtensions.cs
- contentDescriptor.cs
- Matrix.cs
- UnsafeNetInfoNativeMethods.cs
- ListSortDescriptionCollection.cs
- ModelPerspective.cs
- TempEnvironment.cs
- ADMembershipProvider.cs
- DynamicPropertyReader.cs
- XmlNamespaceMapping.cs