Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Core / CSharp / System / Windows / Input / Win32MouseDevice.cs / 1 / Win32MouseDevice.cs
using System.Diagnostics; using System.Collections; using System.Windows; using System.Windows.Media; using System.Windows.Interop; using System.Windows.Threading; using System.Security; using System.Security.Permissions; using MS.Internal; using MS.Internal.PresentationCore; // SecurityHelper using MS.Win32; // *NativeMethods using System.Runtime.InteropServices; using System; using SR=MS.Internal.PresentationCore.SR; using SRID=MS.Internal.PresentationCore.SRID; namespace System.Windows.Input { ////// The Win32MouseDevice class implements the platform specific /// MouseDevice features for the Win32 platform /// internal sealed class Win32MouseDevice : MouseDevice { ////// /// /// /// ////// Critical - This is code that elevates AND creates the mouse device which /// happens to hold the callback to filter mouse messages /// TreatAsSafe: This constructor handles critical data but does not expose it /// It stores instance but there are demands on the instances. /// [SecurityCritical,SecurityTreatAsSafe] internal Win32MouseDevice(InputManager inputManager) : base(inputManager) { } ////// Gets the current state of the specified button from the device from the underlying system /// /// /// The mouse button to get the state of /// ////// The state of the specified mouse button /// ////// Critical: Makes calls to UnsafeNativeMethods (GetKeyState) /// TreatAsSafe: Only returns the current state of the specified button /// [SecurityCritical,SecurityTreatAsSafe] internal override MouseButtonState GetButtonStateFromSystem(MouseButton mouseButton) { MouseButtonState mouseButtonState = MouseButtonState.Released; // Security Mitigation: do not give out input state if the device is not active. if(IsActive) { int virtualKeyCode = 0; switch( mouseButton ) { case MouseButton.Left: virtualKeyCode = NativeMethods.VK_LBUTTON; break; case MouseButton.Right: virtualKeyCode = NativeMethods.VK_RBUTTON; break; case MouseButton.Middle: virtualKeyCode = NativeMethods.VK_MBUTTON; break; case MouseButton.XButton1: virtualKeyCode = NativeMethods.VK_XBUTTON1; break; case MouseButton.XButton2: virtualKeyCode = NativeMethods.VK_XBUTTON2; break; } mouseButtonState = ( UnsafeNativeMethods.GetKeyState(virtualKeyCode) & 0x8000 ) != 0 ? MouseButtonState.Pressed : MouseButtonState.Released; } return mouseButtonState; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System.Diagnostics; using System.Collections; using System.Windows; using System.Windows.Media; using System.Windows.Interop; using System.Windows.Threading; using System.Security; using System.Security.Permissions; using MS.Internal; using MS.Internal.PresentationCore; // SecurityHelper using MS.Win32; // *NativeMethods using System.Runtime.InteropServices; using System; using SR=MS.Internal.PresentationCore.SR; using SRID=MS.Internal.PresentationCore.SRID; namespace System.Windows.Input { ////// The Win32MouseDevice class implements the platform specific /// MouseDevice features for the Win32 platform /// internal sealed class Win32MouseDevice : MouseDevice { ////// /// /// /// ////// Critical - This is code that elevates AND creates the mouse device which /// happens to hold the callback to filter mouse messages /// TreatAsSafe: This constructor handles critical data but does not expose it /// It stores instance but there are demands on the instances. /// [SecurityCritical,SecurityTreatAsSafe] internal Win32MouseDevice(InputManager inputManager) : base(inputManager) { } ////// Gets the current state of the specified button from the device from the underlying system /// /// /// The mouse button to get the state of /// ////// The state of the specified mouse button /// ////// Critical: Makes calls to UnsafeNativeMethods (GetKeyState) /// TreatAsSafe: Only returns the current state of the specified button /// [SecurityCritical,SecurityTreatAsSafe] internal override MouseButtonState GetButtonStateFromSystem(MouseButton mouseButton) { MouseButtonState mouseButtonState = MouseButtonState.Released; // Security Mitigation: do not give out input state if the device is not active. if(IsActive) { int virtualKeyCode = 0; switch( mouseButton ) { case MouseButton.Left: virtualKeyCode = NativeMethods.VK_LBUTTON; break; case MouseButton.Right: virtualKeyCode = NativeMethods.VK_RBUTTON; break; case MouseButton.Middle: virtualKeyCode = NativeMethods.VK_MBUTTON; break; case MouseButton.XButton1: virtualKeyCode = NativeMethods.VK_XBUTTON1; break; case MouseButton.XButton2: virtualKeyCode = NativeMethods.VK_XBUTTON2; break; } mouseButtonState = ( UnsafeNativeMethods.GetKeyState(virtualKeyCode) & 0x8000 ) != 0 ? MouseButtonState.Pressed : MouseButtonState.Released; } return mouseButtonState; } } } // 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
- ASCIIEncoding.cs
- DataStorage.cs
- AudioFormatConverter.cs
- DataSourceListEditor.cs
- RelationshipEntry.cs
- MatrixTransform.cs
- DirectoryObjectSecurity.cs
- BoundingRectTracker.cs
- ToolBarButtonClickEvent.cs
- WebSysDisplayNameAttribute.cs
- DetailsViewInsertEventArgs.cs
- ImportedPolicyConversionContext.cs
- AdapterDictionary.cs
- XmlnsCache.cs
- JsonSerializer.cs
- MouseButtonEventArgs.cs
- WebServiceHost.cs
- InternalBufferManager.cs
- TypeConverterAttribute.cs
- cache.cs
- GridViewEditEventArgs.cs
- NativeRightsManagementAPIsStructures.cs
- RectangleHotSpot.cs
- DispatcherTimer.cs
- ScrollBar.cs
- UrlAuthorizationModule.cs
- EpmContentSerializer.cs
- SecurityTokenAuthenticator.cs
- AutomationPattern.cs
- DependencyPropertyChangedEventArgs.cs
- FixedSOMSemanticBox.cs
- MsmqIntegrationMessagePool.cs
- ToolboxDataAttribute.cs
- XmlSchemaResource.cs
- XmlSchemaAll.cs
- ReferenceEqualityComparer.cs
- CfgParser.cs
- SvcMapFileLoader.cs
- ContextMenuService.cs
- ListViewGroupCollectionEditor.cs
- _BaseOverlappedAsyncResult.cs
- DateTimeParse.cs
- XmlElementList.cs
- KoreanCalendar.cs
- Page.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- DynamicFilter.cs
- PerformanceCounterManager.cs
- ClientRequest.cs
- EmptyControlCollection.cs
- HijriCalendar.cs
- BuildTopDownAttribute.cs
- SwitchElementsCollection.cs
- NewItemsContextMenuStrip.cs
- Types.cs
- TargetConverter.cs
- ToolTip.cs
- XmlResolver.cs
- ChangePassword.cs
- CodeCastExpression.cs
- SearchForVirtualItemEventArgs.cs
- SymbolMethod.cs
- FileDialogCustomPlace.cs
- ColumnCollectionEditor.cs
- FileUtil.cs
- ClientBuildManagerCallback.cs
- CommandField.cs
- PriorityRange.cs
- ToolStripDropDownDesigner.cs
- ContextProperty.cs
- SyndicationSerializer.cs
- OutputCacheProfileCollection.cs
- ServiceModelReg.cs
- DataBoundControl.cs
- PointAnimationUsingPath.cs
- SessionState.cs
- ProviderConnectionPointCollection.cs
- ProjectionPlanCompiler.cs
- StrokeIntersection.cs
- JournalEntry.cs
- BasicHttpSecurity.cs
- CreateUserWizardStep.cs
- ProviderConnectionPointCollection.cs
- ListViewItemMouseHoverEvent.cs
- FormConverter.cs
- InputLanguageSource.cs
- MultilineStringConverter.cs
- ExpressionQuoter.cs
- DrawingAttributes.cs
- MemoryMappedViewStream.cs
- PixelShader.cs
- StylusPointProperty.cs
- DictionaryCustomTypeDescriptor.cs
- NgenServicingAttributes.cs
- AuthorizationSection.cs
- ImageSource.cs
- CngUIPolicy.cs
- RoutedCommand.cs
- XmlElementAttribute.cs
- AccessViolationException.cs