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
- AsyncDataRequest.cs
- DataListItemCollection.cs
- SafeNativeMemoryHandle.cs
- MenuItemCollection.cs
- ITreeGenerator.cs
- ContentDefinition.cs
- SerializationObjectManager.cs
- XmlRawWriter.cs
- RequestQueryProcessor.cs
- DbQueryCommandTree.cs
- CommentEmitter.cs
- ResourceDescriptionAttribute.cs
- Polyline.cs
- URLEditor.cs
- Debug.cs
- ListView.cs
- InputScopeManager.cs
- httpserverutility.cs
- RuntimeArgumentHandle.cs
- precedingquery.cs
- TextOutput.cs
- CharConverter.cs
- milexports.cs
- ToolStripButton.cs
- Errors.cs
- Frame.cs
- EventDescriptor.cs
- HierarchicalDataSourceConverter.cs
- Transform3DCollection.cs
- SqlNotificationRequest.cs
- NavigatorOutput.cs
- TextTreeRootTextBlock.cs
- ConfigurationFileMap.cs
- InvalidComObjectException.cs
- ConfigurationManagerInternalFactory.cs
- SystemTcpConnection.cs
- PersonalizationStateInfoCollection.cs
- SpecularMaterial.cs
- PointAnimationUsingKeyFrames.cs
- Base64Encoding.cs
- CompilationUtil.cs
- PrintingPermissionAttribute.cs
- XamlFrame.cs
- StrokeFIndices.cs
- RegionData.cs
- TreeIterator.cs
- RequestStatusBarUpdateEventArgs.cs
- ButtonBase.cs
- BevelBitmapEffect.cs
- _SpnDictionary.cs
- HandleCollector.cs
- SystemGatewayIPAddressInformation.cs
- DesignUtil.cs
- WebConfigurationManager.cs
- EnumUnknown.cs
- mediaeventargs.cs
- TextTreeRootNode.cs
- PeerCollaboration.cs
- x509utils.cs
- TreeViewImageIndexConverter.cs
- ToolStripItemEventArgs.cs
- MSAAEventDispatcher.cs
- AdornerHitTestResult.cs
- StatusBar.cs
- TranslateTransform.cs
- XmlImplementation.cs
- ValueTypeFixupInfo.cs
- SqlCacheDependencySection.cs
- RemoteWebConfigurationHost.cs
- CollectionContainer.cs
- HWStack.cs
- XmlQualifiedNameTest.cs
- SqlCommandBuilder.cs
- PersonalizationStateInfoCollection.cs
- XsltQilFactory.cs
- DataServices.cs
- TemplateFactory.cs
- CacheAxisQuery.cs
- Selection.cs
- shaperfactory.cs
- DataGridClipboardCellContent.cs
- CodeAccessPermission.cs
- DataGridViewDataConnection.cs
- BasicAsyncResult.cs
- XmlAttributes.cs
- ReachDocumentPageSerializerAsync.cs
- DispatcherTimer.cs
- ProxyManager.cs
- WindowsIPAddress.cs
- XmlAnyElementAttributes.cs
- SqlDataSourceRefreshSchemaForm.cs
- MenuStrip.cs
- HScrollProperties.cs
- Transform.cs
- XpsSerializationManagerAsync.cs
- StoreContentChangedEventArgs.cs
- FormsAuthenticationEventArgs.cs
- RunInstallerAttribute.cs
- ClientScriptManager.cs
- PerformanceCounterLib.cs