Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- TransformedBitmap.cs
- SynchronizedDispatch.cs
- MenuItemCollectionEditor.cs
- ChannelTracker.cs
- GridProviderWrapper.cs
- WorkflowRuntimeService.cs
- SetStoryboardSpeedRatio.cs
- MsmqIntegrationSecurityMode.cs
- OdbcEnvironment.cs
- TextClipboardData.cs
- Menu.cs
- IOException.cs
- WebPartDeleteVerb.cs
- AvTraceDetails.cs
- DbRetry.cs
- SortableBindingList.cs
- BindingListCollectionView.cs
- TypeHelper.cs
- AppLevelCompilationSectionCache.cs
- XPathNavigator.cs
- RtfControls.cs
- JsonGlobals.cs
- Stack.cs
- CursorEditor.cs
- HybridDictionary.cs
- RegisteredDisposeScript.cs
- DataGridItemEventArgs.cs
- WeakReference.cs
- CompensateDesigner.cs
- EncoderReplacementFallback.cs
- WebPartDeleteVerb.cs
- SafeUserTokenHandle.cs
- CategoryNameCollection.cs
- AuthenticationConfig.cs
- RegexCompiler.cs
- AssemblyBuilder.cs
- ExpressionWriter.cs
- ThousandthOfEmRealDoubles.cs
- ListViewVirtualItemsSelectionRangeChangedEvent.cs
- DataSvcMapFile.cs
- GiveFeedbackEvent.cs
- LockedAssemblyCache.cs
- XsdDateTime.cs
- XPathSelectionIterator.cs
- PaperSize.cs
- FacetValueContainer.cs
- HandlerBase.cs
- odbcmetadatafactory.cs
- DLinqColumnProvider.cs
- IDispatchConstantAttribute.cs
- CompleteWizardStep.cs
- HtmlInputReset.cs
- ScriptIgnoreAttribute.cs
- XmlUtilWriter.cs
- QueryResponse.cs
- XmlElementAttributes.cs
- OverflowException.cs
- ProviderCommandInfoUtils.cs
- DSASignatureDeformatter.cs
- RewritingSimplifier.cs
- ComponentEditorForm.cs
- ItemPager.cs
- DocumentXPathNavigator.cs
- Repeater.cs
- GlyphElement.cs
- RecognizerInfo.cs
- CustomErrorsSection.cs
- ThicknessKeyFrameCollection.cs
- SystemFonts.cs
- ToolBarPanel.cs
- CompilerErrorCollection.cs
- Model3DCollection.cs
- SoapAttributeOverrides.cs
- Native.cs
- lengthconverter.cs
- EntitySqlException.cs
- StatusBarItemAutomationPeer.cs
- StandardOleMarshalObject.cs
- FramingDecoders.cs
- NamedElement.cs
- OletxTransactionFormatter.cs
- Point3DCollection.cs
- DateBoldEvent.cs
- QuaternionKeyFrameCollection.cs
- CodeMemberMethod.cs
- XXXOnTypeBuilderInstantiation.cs
- WindowsAltTab.cs
- EnumBuilder.cs
- TypeExtensions.cs
- ElementProxy.cs
- WinFormsUtils.cs
- BinaryFormatterSinks.cs
- OracleBFile.cs
- IdentifierElement.cs
- LoginUtil.cs
- JumpItem.cs
- UnsafeNativeMethods.cs
- ExtenderControl.cs
- Page.cs
- MsmqInputChannelListenerBase.cs