Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / UIAutomation / UIAutomationClient / MS / Internal / Automation / MenuTracker.cs / 1305600 / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Baml2006KeyRecord.cs
- ApplicationSettingsBase.cs
- Proxy.cs
- ClientProxyGenerator.cs
- SmtpMail.cs
- RequestTimeoutManager.cs
- DataContractFormatAttribute.cs
- RelationshipDetailsRow.cs
- bindurihelper.cs
- UnsafeNativeMethods.cs
- SystemIcmpV6Statistics.cs
- VerticalAlignConverter.cs
- CreateParams.cs
- EventTrigger.cs
- KeyGesture.cs
- CompilerCollection.cs
- Transform3DCollection.cs
- ChangeProcessor.cs
- HttpInputStream.cs
- ConfigXmlDocument.cs
- Size3DValueSerializer.cs
- EntityParameter.cs
- CodeBlockBuilder.cs
- BinaryOperationBinder.cs
- WorkflowMessageEventArgs.cs
- WorkflowMarkupSerializationProvider.cs
- EventLogPermissionAttribute.cs
- DependencyPropertyConverter.cs
- initElementDictionary.cs
- ToolStripContainer.cs
- ParameterModifier.cs
- ConstrainedDataObject.cs
- DocumentAutomationPeer.cs
- SQlBooleanStorage.cs
- UInt16.cs
- QilUnary.cs
- SQLMoneyStorage.cs
- httpstaticobjectscollection.cs
- MetadataFile.cs
- Image.cs
- AssociationType.cs
- EmptyReadOnlyDictionaryInternal.cs
- UrlAuthorizationModule.cs
- ScrollableControl.cs
- Roles.cs
- PagesChangedEventArgs.cs
- DecoderReplacementFallback.cs
- FlowDocumentReaderAutomationPeer.cs
- SupportsEventValidationAttribute.cs
- DataGridViewCellValueEventArgs.cs
- SpellerError.cs
- EnumerationRangeValidationUtil.cs
- UnmanagedMarshal.cs
- RuleSettingsCollection.cs
- PseudoWebRequest.cs
- COMException.cs
- ToolStripArrowRenderEventArgs.cs
- DataViewManager.cs
- PngBitmapDecoder.cs
- RequestCacheManager.cs
- X509PeerCertificateAuthenticationElement.cs
- StreamWithDictionary.cs
- SecurityStateEncoder.cs
- GrammarBuilderPhrase.cs
- QueryConverter.cs
- DynamicMetaObject.cs
- AutomationElementCollection.cs
- GcSettings.cs
- ToolStripScrollButton.cs
- AssemblyHash.cs
- SecurityDescriptor.cs
- SchemaNames.cs
- XmlSubtreeReader.cs
- ControlParameter.cs
- OleDbDataAdapter.cs
- EventLogPermissionAttribute.cs
- EntityDataSourceView.cs
- NameValuePermission.cs
- SqlClientMetaDataCollectionNames.cs
- SystemWebCachingSectionGroup.cs
- TextServicesLoader.cs
- Token.cs
- StateDesigner.LayoutSelectionGlyph.cs
- AccessViolationException.cs
- XmlReaderSettings.cs
- FontClient.cs
- CoreSwitches.cs
- FixedSOMGroup.cs
- DecoratedNameAttribute.cs
- AudioLevelUpdatedEventArgs.cs
- Vector3DAnimationUsingKeyFrames.cs
- ToolStripDropDown.cs
- EventProperty.cs
- SettingsPropertyValue.cs
- ObjectSecurity.cs
- RequestCacheManager.cs
- BitmapEffectDrawingContextWalker.cs
- FileLoadException.cs
- SqlException.cs
- SizeChangedInfo.cs