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
- PriorityItem.cs
- AsyncCompletedEventArgs.cs
- ProgressBarRenderer.cs
- StringConverter.cs
- ReadOnlyDataSource.cs
- MenuAdapter.cs
- PointLightBase.cs
- CoTaskMemSafeHandle.cs
- UInt32.cs
- TextWriter.cs
- HuffCodec.cs
- SessionEndedEventArgs.cs
- CatalogPartChrome.cs
- WindowPattern.cs
- PathGeometry.cs
- XmlElementAttributes.cs
- SocketException.cs
- DataServiceContext.cs
- DynamicObject.cs
- StylusTouchDevice.cs
- WebException.cs
- ControlDesigner.cs
- PathGeometry.cs
- SmtpNetworkElement.cs
- XmlStreamStore.cs
- IndexerNameAttribute.cs
- AssociationSetEnd.cs
- RemotingSurrogateSelector.cs
- IPEndPoint.cs
- SpeechSeg.cs
- ResXResourceSet.cs
- Image.cs
- FlowchartDesigner.Helpers.cs
- SqlDataReaderSmi.cs
- ContentDisposition.cs
- AxHostDesigner.cs
- VarRefManager.cs
- DynamicMethod.cs
- Assembly.cs
- DataGridViewButtonColumn.cs
- IndexOutOfRangeException.cs
- PowerStatus.cs
- WebControlsSection.cs
- CustomWebEventKey.cs
- DecoderExceptionFallback.cs
- RangeValidator.cs
- JsonReader.cs
- Peer.cs
- ClaimTypeRequirement.cs
- Size3D.cs
- querybuilder.cs
- fixedPageContentExtractor.cs
- Margins.cs
- RunInstallerAttribute.cs
- GetPageCompletedEventArgs.cs
- ResourceExpressionBuilder.cs
- DragEvent.cs
- TemplatedMailWebEventProvider.cs
- Logging.cs
- SQLInt64Storage.cs
- ValidationSummary.cs
- CalculatedColumn.cs
- FixedSOMFixedBlock.cs
- TextBoxBase.cs
- ParameterRetriever.cs
- XmlSchemaException.cs
- TemplateXamlTreeBuilder.cs
- MILUtilities.cs
- ControlBindingsCollection.cs
- CursorConverter.cs
- DataGridViewRow.cs
- CodeComment.cs
- ListControl.cs
- PropertyOverridesDialog.cs
- ArraySortHelper.cs
- SchemaRegistration.cs
- ReflectionServiceProvider.cs
- HttpDebugHandler.cs
- StringResourceManager.cs
- PenThreadPool.cs
- TabRenderer.cs
- IsolatedStorage.cs
- VisualTarget.cs
- DeviceSpecific.cs
- ProfileGroupSettings.cs
- xmlglyphRunInfo.cs
- ExtendedTransformFactory.cs
- NonBatchDirectoryCompiler.cs
- CaseInsensitiveComparer.cs
- JsonReader.cs
- CalendarButton.cs
- OleDbWrapper.cs
- DocumentSequence.cs
- HitTestWithPointDrawingContextWalker.cs
- EntityDataSourceSelectedEventArgs.cs
- DBSchemaTable.cs
- Base64Decoder.cs
- RecordManager.cs
- UrlPath.cs
- OleDbConnectionFactory.cs