Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Input / Win32MouseDevice.cs / 1305600 / 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
- TextBounds.cs
- UserControl.cs
- TextRangeEdit.cs
- SchemaType.cs
- exports.cs
- CompatibleComparer.cs
- DiscoveryDocumentLinksPattern.cs
- CubicEase.cs
- RegexStringValidator.cs
- Publisher.cs
- StyleXamlTreeBuilder.cs
- PtsContext.cs
- sqlcontext.cs
- ConstructorExpr.cs
- MdImport.cs
- QilValidationVisitor.cs
- CollectionBuilder.cs
- ThreadExceptionDialog.cs
- SecurityUtils.cs
- AudioDeviceOut.cs
- RegexCompiler.cs
- FontConverter.cs
- DetailsViewInsertedEventArgs.cs
- ObjectDisposedException.cs
- GridViewUpdatedEventArgs.cs
- ScrollProperties.cs
- DiscoveryClientReferences.cs
- SByte.cs
- COM2ColorConverter.cs
- XmlStreamStore.cs
- KeyTimeConverter.cs
- InertiaTranslationBehavior.cs
- TextTreeDeleteContentUndoUnit.cs
- ThrowHelper.cs
- Positioning.cs
- TransactionScope.cs
- HttpValueCollection.cs
- wgx_commands.cs
- ValueChangedEventManager.cs
- HtmlInputRadioButton.cs
- ColorContextHelper.cs
- DataRowChangeEvent.cs
- IisTraceListener.cs
- _AutoWebProxyScriptWrapper.cs
- CommonObjectSecurity.cs
- AutomationIdentifier.cs
- CookieProtection.cs
- smtpconnection.cs
- Configuration.cs
- Positioning.cs
- PageBreakRecord.cs
- SecurityCriticalDataForSet.cs
- ThicknessConverter.cs
- KeySplineConverter.cs
- SafePEFileHandle.cs
- _SSPIWrapper.cs
- ValueType.cs
- PackWebRequest.cs
- MSAAWinEventWrap.cs
- CodeExpressionStatement.cs
- Message.cs
- SolidColorBrush.cs
- BulletedListEventArgs.cs
- AppSettings.cs
- OrthographicCamera.cs
- HttpResponseWrapper.cs
- Function.cs
- ReflectionPermission.cs
- WeakEventTable.cs
- BaseCAMarshaler.cs
- AdCreatedEventArgs.cs
- ToolStripLocationCancelEventArgs.cs
- Color.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- CustomError.cs
- TemplateColumn.cs
- XNodeValidator.cs
- ClockController.cs
- DataControlFieldHeaderCell.cs
- Scripts.cs
- ContentValidator.cs
- CollectionConverter.cs
- OdbcFactory.cs
- ParserStreamGeometryContext.cs
- HttpStreamFormatter.cs
- TypeSemantics.cs
- MasterPage.cs
- AnimationClock.cs
- FunctionNode.cs
- RedistVersionInfo.cs
- MdiWindowListItemConverter.cs
- RemotingAttributes.cs
- SqlDataSourceCommandEventArgs.cs
- NetworkInformationException.cs
- CompoundFileReference.cs
- LoginUtil.cs
- TdsParserStaticMethods.cs
- FontFamily.cs
- RegistryKey.cs
- RectangleF.cs