Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / UIAutomation / UIAutomationClient / MS / Internal / Automation / MenuTracker.cs / 1 / MenuTracker.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Class used to track context menus appearing // // History: // 3/23/2004 : preid Created // //--------------------------------------------------------------------------- using System; using System.Text; using System.Windows.Automation; using System.Diagnostics; using MS.Win32; namespace MS.Internal.Automation { internal delegate void MenuHandler( AutomationElement rawEl, bool menuHasOpened ); // MenuOpened - Class used to track context menus appearing internal class MenuTracker : WinEventWrap { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors internal MenuTracker(MenuHandler newHandler) : base(new int[] {NativeMethods.EVENT_SYSTEM_MENUPOPUPSTART, NativeMethods.EVENT_SYSTEM_MENUPOPUPEND}) { AddCallback(newHandler); } #endregion Constructors //------------------------------------------------------ // // Internal Methods // //----------------------------------------------------- #region Internal Methods internal override void WinEventProc(int eventId, IntPtr hwnd, int idObject, int idChild, uint eventTime) { AutomationElement rawEl = null; bool menuHasOpened = eventId == NativeMethods.EVENT_SYSTEM_MENUPOPUPSTART; // Only create a raw element wrapper if the menu has popped up. Send a // null element for menu closed (the element isn't available anymore). // if( menuHasOpened ) { // Ignore if this is a bogus hwnd (shouldn't happen) if( hwnd == IntPtr.Zero ) return; NativeMethods.HWND nativeHwnd = NativeMethods.HWND.Cast( hwnd ); if( !SafeNativeMethods.IsWindow( nativeHwnd ) ) return; // Filter... send events for visible hwnds only if( !SafeNativeMethods.IsWindowVisible( nativeHwnd ) ) return; rawEl = AutomationElement.FromHandle( hwnd ); } // Do callback. This handler is called due to a WinEvent on the client. The handler // is going to hand off the work of calling out to the client code to another thread // via a queue so it is safe to do this callback w/in the lock. object [] handlers = GetHandlers(); Debug.Assert(handlers.Length <= 1, "handlers.Length"); if( handlers.Length > 0 ) ( ( MenuHandler )handlers[0] )( rawEl, menuHasOpened ); } #endregion Internal 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: Class used to track context menus appearing // // History: // 3/23/2004 : preid Created // //--------------------------------------------------------------------------- using System; using System.Text; using System.Windows.Automation; using System.Diagnostics; using MS.Win32; namespace MS.Internal.Automation { internal delegate void MenuHandler( AutomationElement rawEl, bool menuHasOpened ); // MenuOpened - Class used to track context menus appearing internal class MenuTracker : WinEventWrap { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors internal MenuTracker(MenuHandler newHandler) : base(new int[] {NativeMethods.EVENT_SYSTEM_MENUPOPUPSTART, NativeMethods.EVENT_SYSTEM_MENUPOPUPEND}) { AddCallback(newHandler); } #endregion Constructors //------------------------------------------------------ // // Internal Methods // //----------------------------------------------------- #region Internal Methods internal override void WinEventProc(int eventId, IntPtr hwnd, int idObject, int idChild, uint eventTime) { AutomationElement rawEl = null; bool menuHasOpened = eventId == NativeMethods.EVENT_SYSTEM_MENUPOPUPSTART; // Only create a raw element wrapper if the menu has popped up. Send a // null element for menu closed (the element isn't available anymore). // if( menuHasOpened ) { // Ignore if this is a bogus hwnd (shouldn't happen) if( hwnd == IntPtr.Zero ) return; NativeMethods.HWND nativeHwnd = NativeMethods.HWND.Cast( hwnd ); if( !SafeNativeMethods.IsWindow( nativeHwnd ) ) return; // Filter... send events for visible hwnds only if( !SafeNativeMethods.IsWindowVisible( nativeHwnd ) ) return; rawEl = AutomationElement.FromHandle( hwnd ); } // Do callback. This handler is called due to a WinEvent on the client. The handler // is going to hand off the work of calling out to the client code to another thread // via a queue so it is safe to do this callback w/in the lock. object [] handlers = GetHandlers(); Debug.Assert(handlers.Length <= 1, "handlers.Length"); if( handlers.Length > 0 ) ( ( MenuHandler )handlers[0] )( rawEl, menuHasOpened ); } #endregion Internal 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
- Operator.cs
- BreakRecordTable.cs
- Codec.cs
- CancellationTokenRegistration.cs
- Int32KeyFrameCollection.cs
- SinglePageViewer.cs
- SpotLight.cs
- WebResponse.cs
- HasCopySemanticsAttribute.cs
- CustomCredentialPolicy.cs
- DiscreteKeyFrames.cs
- EventMappingSettings.cs
- DataGridViewElement.cs
- AccessDataSourceView.cs
- ManipulationInertiaStartingEventArgs.cs
- ListViewItemEventArgs.cs
- followingsibling.cs
- NCryptNative.cs
- WebPartDisplayModeCancelEventArgs.cs
- ExternalFile.cs
- RevocationPoint.cs
- ServiceDebugElement.cs
- DesignerObjectListAdapter.cs
- PaperSize.cs
- OutputCacheProfileCollection.cs
- BrowserCapabilitiesCodeGenerator.cs
- NamespaceMapping.cs
- PerformanceCounterPermission.cs
- TracePayload.cs
- GridLength.cs
- odbcmetadatafactory.cs
- Button.cs
- DocComment.cs
- HttpWebRequestElement.cs
- ManagementBaseObject.cs
- StatusBarAutomationPeer.cs
- SizeKeyFrameCollection.cs
- ContentPlaceHolder.cs
- HostProtectionPermission.cs
- PagedDataSource.cs
- RegistryDataKey.cs
- ObjectDataSourceDesigner.cs
- SoapReflectionImporter.cs
- ClientRoleProvider.cs
- CoTaskMemUnicodeSafeHandle.cs
- SHA256.cs
- HtmlTernaryTree.cs
- DateTimePicker.cs
- TableCellCollection.cs
- DaylightTime.cs
- PageParserFilter.cs
- DefaultEventAttribute.cs
- MetadataArtifactLoaderComposite.cs
- mediaeventshelper.cs
- SqlUserDefinedTypeAttribute.cs
- TreeNodeBinding.cs
- AudioSignalProblemOccurredEventArgs.cs
- Graphics.cs
- DataGridPagerStyle.cs
- WebEvents.cs
- WSHttpBindingBase.cs
- ContainerAction.cs
- HtmlHead.cs
- FaultConverter.cs
- ObjectDataSourceSelectingEventArgs.cs
- propertytag.cs
- MetadataCache.cs
- ItemAutomationPeer.cs
- AppDomain.cs
- XPathDocumentNavigator.cs
- Camera.cs
- TypefaceCollection.cs
- ProxyHwnd.cs
- Maps.cs
- ListChunk.cs
- SqlMethodCallConverter.cs
- KerberosTicketHashIdentifierClause.cs
- ChannelManager.cs
- Directory.cs
- RadioButtonFlatAdapter.cs
- CompiledRegexRunnerFactory.cs
- Separator.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- Rect.cs
- XslCompiledTransform.cs
- PreservationFileReader.cs
- ProfilePropertySettings.cs
- SharedUtils.cs
- CompilerResults.cs
- StringAnimationUsingKeyFrames.cs
- ScrollBarAutomationPeer.cs
- FilterableAttribute.cs
- TryCatchDesigner.xaml.cs
- HttpProfileBase.cs
- ContentDisposition.cs
- DockAndAnchorLayout.cs
- PageRanges.cs
- HandlerBase.cs
- ObjectStateManagerMetadata.cs
- FormViewModeEventArgs.cs