Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- SQLSingleStorage.cs
- SystemResourceHost.cs
- LocalIdKeyIdentifierClause.cs
- FileDialog.cs
- MatrixTransform3D.cs
- ImportOptions.cs
- Trace.cs
- PassportAuthentication.cs
- PcmConverter.cs
- SqlEnums.cs
- XmlWrappingWriter.cs
- DbParameterHelper.cs
- KeySpline.cs
- DBConcurrencyException.cs
- ElementNotAvailableException.cs
- XPathExpr.cs
- Latin1Encoding.cs
- SQlBooleanStorage.cs
- ClaimSet.cs
- TemplateBindingExtensionConverter.cs
- XmlSchemaSequence.cs
- ConfigurationStrings.cs
- AttachmentCollection.cs
- HtmlContainerControl.cs
- IisHelper.cs
- StringUtil.cs
- InstancePersistenceContext.cs
- StringFreezingAttribute.cs
- TextCharacters.cs
- DbConnectionOptions.cs
- SimpleType.cs
- RadioButton.cs
- ObjectSecurity.cs
- ProjectedSlot.cs
- SapiRecognizer.cs
- DbConnectionPoolGroup.cs
- MailWebEventProvider.cs
- XPathNodePointer.cs
- Encoder.cs
- InputQueue.cs
- SafeNativeMethodsMilCoreApi.cs
- SiteMapNodeItemEventArgs.cs
- ObjectSpanRewriter.cs
- RoleGroup.cs
- RawMouseInputReport.cs
- CompletedAsyncResult.cs
- CalendarBlackoutDatesCollection.cs
- GridView.cs
- ProfileSettingsCollection.cs
- StandardOleMarshalObject.cs
- BasicAsyncResult.cs
- X509SecurityToken.cs
- ImageDrawing.cs
- basenumberconverter.cs
- DateTimeFormatInfo.cs
- MetafileHeader.cs
- DefaultValidator.cs
- URLString.cs
- BuilderPropertyEntry.cs
- SystemParameters.cs
- ProofTokenCryptoHandle.cs
- ToolStripRenderEventArgs.cs
- BitmapScalingModeValidation.cs
- GridViewRowPresenter.cs
- InputMethod.cs
- RichTextBoxContextMenu.cs
- DesignerDataRelationship.cs
- WindowsListViewGroupSubsetLink.cs
- AsyncMethodInvoker.cs
- TracePayload.cs
- MissingMethodException.cs
- XslAstAnalyzer.cs
- SecurityIdentifierConverter.cs
- PerfCounters.cs
- EncodingConverter.cs
- ConstNode.cs
- AudioBase.cs
- EntryWrittenEventArgs.cs
- HtmlWindow.cs
- StreamSecurityUpgradeAcceptorBase.cs
- ConfigurationElementCollection.cs
- ToolboxCategoryItems.cs
- WebBrowserBase.cs
- EntityDataSourceSelectingEventArgs.cs
- StateItem.cs
- EntityCommandDefinition.cs
- DateTimeValueSerializerContext.cs
- DbConnectionInternal.cs
- JsonWriter.cs
- XsdDateTime.cs
- LabelLiteral.cs
- ControlPaint.cs
- EntityModelBuildProvider.cs
- WsdlServiceChannelBuilder.cs
- LogRecordSequence.cs
- ExponentialEase.cs
- SqlClientFactory.cs
- NetworkStream.cs
- SimpleType.cs
- UiaCoreTypesApi.cs