Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / AccessibleTech / longhorn / Automation / 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 : [....] 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
- WebColorConverter.cs
- DrawToolTipEventArgs.cs
- RectangleF.cs
- MemberDomainMap.cs
- MouseGestureValueSerializer.cs
- CallbackHandler.cs
- XmlArrayAttribute.cs
- DataRowCollection.cs
- TextRenderingModeValidation.cs
- CompoundFileIOPermission.cs
- EmbeddedMailObjectsCollection.cs
- DiscardableAttribute.cs
- CharStorage.cs
- ActivationWorker.cs
- DBCSCodePageEncoding.cs
- DesignBinding.cs
- Pair.cs
- SessionSwitchEventArgs.cs
- ManagedFilter.cs
- AmbientProperties.cs
- SymbolType.cs
- SpellerError.cs
- XmlDownloadManager.cs
- PolicyChain.cs
- ScriptMethodAttribute.cs
- HandlerMappingMemo.cs
- SafeUserTokenHandle.cs
- Transactions.cs
- SqlCommand.cs
- OpCellTreeNode.cs
- IsolatedStorageFile.cs
- FontWeights.cs
- DataServiceHost.cs
- ObjectStateFormatter.cs
- JumpList.cs
- View.cs
- WebServiceClientProxyGenerator.cs
- GradientStopCollection.cs
- AuthenticationSection.cs
- BuildProvider.cs
- RefType.cs
- XmlnsCompatibleWithAttribute.cs
- XmlDictionaryReader.cs
- MLangCodePageEncoding.cs
- hresults.cs
- QueryOperationResponseOfT.cs
- MatrixCamera.cs
- sortedlist.cs
- ProviderException.cs
- CheckBoxBaseAdapter.cs
- SHA1CryptoServiceProvider.cs
- OdbcEnvironment.cs
- EdmComplexTypeAttribute.cs
- ChtmlPageAdapter.cs
- DbLambda.cs
- TemplateGroupCollection.cs
- SoapExtensionReflector.cs
- CalculatedColumn.cs
- CookielessHelper.cs
- SortDescriptionCollection.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- OperationCanceledException.cs
- DataGridViewCellStyle.cs
- DataControlReference.cs
- LocalizationParserHooks.cs
- ControlBindingsCollection.cs
- OdbcError.cs
- FixedSOMPage.cs
- Listbox.cs
- Size.cs
- DesignerAttribute.cs
- XmlUnspecifiedAttribute.cs
- SystemDiagnosticsSection.cs
- SqlLiftIndependentRowExpressions.cs
- WhitespaceRule.cs
- Console.cs
- HostedElements.cs
- AmbientLight.cs
- LogLogRecord.cs
- XamlGridLengthSerializer.cs
- ListDesigner.cs
- Point3DAnimationBase.cs
- DataGridViewCheckBoxColumn.cs
- RectConverter.cs
- MessageQueueTransaction.cs
- CustomAttributeSerializer.cs
- RowUpdatedEventArgs.cs
- TransformedBitmap.cs
- SiteMembershipCondition.cs
- TemplatedEditableDesignerRegion.cs
- AssociationSetEnd.cs
- WebPartHeaderCloseVerb.cs
- ListViewItem.cs
- AdornerHitTestResult.cs
- HashCryptoHandle.cs
- UnsafeNativeMethods.cs
- SessionEndingEventArgs.cs
- ObfuscationAttribute.cs
- DesignParameter.cs
- Activity.cs