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
- ChtmlSelectionListAdapter.cs
- XmlExpressionDumper.cs
- FormattedText.cs
- PageThemeParser.cs
- CollectionEditor.cs
- BooleanStorage.cs
- TraceLevelStore.cs
- SqlDeflator.cs
- DataControlPagerLinkButton.cs
- DataGridCell.cs
- AlignmentXValidation.cs
- HeaderCollection.cs
- XPathChildIterator.cs
- Axis.cs
- InputScopeAttribute.cs
- PriorityQueue.cs
- PairComparer.cs
- UIElement.cs
- Material.cs
- SynchronizationLockException.cs
- IBuiltInEvidence.cs
- StatusStrip.cs
- GlyphingCache.cs
- TransactionOptions.cs
- ParameterRefs.cs
- NameTable.cs
- CLSCompliantAttribute.cs
- StdValidatorsAndConverters.cs
- CellParaClient.cs
- BinaryReader.cs
- Mappings.cs
- LateBoundBitmapDecoder.cs
- TagMapCollection.cs
- Message.cs
- DynamicQueryableWrapper.cs
- SqlCacheDependencyDatabase.cs
- RelativeSource.cs
- ControlLocalizer.cs
- TargetException.cs
- HelpInfo.cs
- DispatchRuntime.cs
- CodeSnippetTypeMember.cs
- UInt32Storage.cs
- MouseCaptureWithinProperty.cs
- OpCellTreeNode.cs
- SynchronizingStream.cs
- XmlSchemaAnnotation.cs
- MethodResolver.cs
- StaticSiteMapProvider.cs
- DiagnosticStrings.cs
- ChameleonKey.cs
- ApplicationManager.cs
- CodeIdentifier.cs
- NativeWindow.cs
- WindowsTitleBar.cs
- DBNull.cs
- UnsafeNativeMethodsPenimc.cs
- ProviderConnectionPointCollection.cs
- Polygon.cs
- MonthCalendar.cs
- Graph.cs
- DebugTracing.cs
- TreeNodeCollection.cs
- XomlCompilerParameters.cs
- SessionStateUtil.cs
- BrowserCapabilitiesCodeGenerator.cs
- HttpClientCertificate.cs
- HttpListenerResponse.cs
- SqlRowUpdatingEvent.cs
- Directory.cs
- EntityExpressionVisitor.cs
- dsa.cs
- SQLDouble.cs
- IEnumerable.cs
- Attributes.cs
- SapiRecoInterop.cs
- BaseHashHelper.cs
- ProgressBarBrushConverter.cs
- Line.cs
- TypeElementCollection.cs
- FileUtil.cs
- TextEndOfLine.cs
- DesignConnectionCollection.cs
- MailDefinition.cs
- DataRowChangeEvent.cs
- ControlCachePolicy.cs
- SspiHelper.cs
- ComboBoxHelper.cs
- TaskHelper.cs
- Int64Storage.cs
- ChangePassword.cs
- DependencyObjectValidator.cs
- TreeViewAutomationPeer.cs
- ClientConfigurationHost.cs
- TcpClientChannel.cs
- EventlogProvider.cs
- CustomError.cs
- DialogWindow.cs
- Highlights.cs
- Expander.cs