Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- ResourceWriter.cs
- X509Utils.cs
- Utils.cs
- EntityProxyFactory.cs
- ItemDragEvent.cs
- CompositeKey.cs
- SymbolType.cs
- SystemNetHelpers.cs
- ExceptionUtil.cs
- Enlistment.cs
- ApplicationTrust.cs
- PropertyGridView.cs
- Identity.cs
- GCHandleCookieTable.cs
- LinkUtilities.cs
- QueuePropertyVariants.cs
- CompatibleComparer.cs
- ThreadTrace.cs
- Menu.cs
- SystemIcmpV4Statistics.cs
- WpfGeneratedKnownTypes.cs
- ColorConvertedBitmap.cs
- QueryOpeningEnumerator.cs
- SynchronousChannel.cs
- ApplicationId.cs
- RegexWorker.cs
- ProfileEventArgs.cs
- EnumerableValidator.cs
- FamilyTypeface.cs
- Menu.cs
- CreateParams.cs
- SingleAnimation.cs
- FormClosedEvent.cs
- typedescriptorpermission.cs
- LayoutEvent.cs
- StylusEditingBehavior.cs
- FaultPropagationQuery.cs
- Internal.cs
- RoutedEventHandlerInfo.cs
- SHA384.cs
- InfoCardProofToken.cs
- BitmapSourceSafeMILHandle.cs
- MexBindingElement.cs
- FileReader.cs
- BooleanStorage.cs
- Update.cs
- CatalogPartCollection.cs
- ItemDragEvent.cs
- OdbcReferenceCollection.cs
- DataSourceCache.cs
- EditorZone.cs
- ComplexPropertyEntry.cs
- PropertyChangedEventManager.cs
- Quaternion.cs
- PropertyOverridesTypeEditor.cs
- ObjectParameterCollection.cs
- PropertyManager.cs
- HttpCookie.cs
- OleDbConnection.cs
- TraceHandlerErrorFormatter.cs
- WebEventTraceProvider.cs
- PeerNameRegistration.cs
- OracleDataReader.cs
- TemplateField.cs
- SharedPersonalizationStateInfo.cs
- Size3DConverter.cs
- StackSpiller.Bindings.cs
- TemplateInstanceAttribute.cs
- SpeechEvent.cs
- MimeObjectFactory.cs
- SqlConnectionPoolGroupProviderInfo.cs
- Encoding.cs
- DocumentsTrace.cs
- AuthenticationModuleElementCollection.cs
- WindowsListViewItem.cs
- MailBnfHelper.cs
- ProxyWebPartManager.cs
- DataControlField.cs
- MenuScrollingVisibilityConverter.cs
- ToolStrip.cs
- TrackingValidationObjectDictionary.cs
- DaylightTime.cs
- Panel.cs
- DataKey.cs
- RunInstallerAttribute.cs
- XmlSchemaAttributeGroup.cs
- CaseInsensitiveComparer.cs
- Transform3DGroup.cs
- RemoteX509AsymmetricSecurityKey.cs
- TextRangeEdit.cs
- TypeResolver.cs
- SharedDp.cs
- CodeGeneratorOptions.cs
- SplitterCancelEvent.cs
- IsolationInterop.cs
- ProfilePropertySettings.cs
- TypeConverter.cs
- PublisherMembershipCondition.cs
- UriSectionData.cs
- MobileControlsSection.cs