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
- _CommandStream.cs
- ResourceReferenceKeyNotFoundException.cs
- DispatcherProcessingDisabled.cs
- SiteMapPathDesigner.cs
- InstanceCollisionException.cs
- PersianCalendar.cs
- HMACSHA512.cs
- CollectionEditor.cs
- SrgsGrammarCompiler.cs
- LayoutDump.cs
- ToolStripPanelSelectionGlyph.cs
- PictureBox.cs
- KeyedHashAlgorithm.cs
- HttpHandlersSection.cs
- EventWaitHandleSecurity.cs
- RadioButton.cs
- TypefaceMap.cs
- CreateBookmarkScope.cs
- ObjectSelectorEditor.cs
- PageSettings.cs
- IsolationInterop.cs
- NullableConverter.cs
- LineMetrics.cs
- SafeTimerHandle.cs
- SerialStream.cs
- DataDocumentXPathNavigator.cs
- itemelement.cs
- BasePropertyDescriptor.cs
- AmbientValueAttribute.cs
- WebPartConnectionsEventArgs.cs
- DesignTimeValidationFeature.cs
- SerializationInfoEnumerator.cs
- SqlSelectStatement.cs
- CodeSubDirectory.cs
- WindowsFormsEditorServiceHelper.cs
- controlskin.cs
- MiniAssembly.cs
- RepeatBehaviorConverter.cs
- SymbolType.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- CharConverter.cs
- XmlUnspecifiedAttribute.cs
- FontStretchConverter.cs
- TransactionProtocolConverter.cs
- CharUnicodeInfo.cs
- QuadraticBezierSegment.cs
- BufferedGraphics.cs
- Command.cs
- TiffBitmapEncoder.cs
- DocumentSchemaValidator.cs
- ASCIIEncoding.cs
- Vars.cs
- GeometryModel3D.cs
- RowUpdatingEventArgs.cs
- StateDesigner.Layouts.cs
- precedingsibling.cs
- XmlNodeWriter.cs
- PageClientProxyGenerator.cs
- ManualResetEventSlim.cs
- SessionEndingEventArgs.cs
- SqlHelper.cs
- ProfileSettings.cs
- DescriptionCreator.cs
- AutomationPropertyInfo.cs
- EventlogProvider.cs
- SafeArrayRankMismatchException.cs
- StatusBarItemAutomationPeer.cs
- WindowsAltTab.cs
- StringExpressionSet.cs
- AttributeCollection.cs
- Keyboard.cs
- DetailsViewModeEventArgs.cs
- QueryCacheKey.cs
- PointCollectionConverter.cs
- XmlDataSourceNodeDescriptor.cs
- TextEditorSpelling.cs
- SqlConnection.cs
- InvokeProviderWrapper.cs
- RegisteredDisposeScript.cs
- SID.cs
- EncoderParameter.cs
- HtmlInputImage.cs
- SignedPkcs7.cs
- ChooseAction.cs
- TreeViewCancelEvent.cs
- DecoratedNameAttribute.cs
- CodeGotoStatement.cs
- ReaderWriterLockWrapper.cs
- TransformerInfo.cs
- WindowsFormsHostAutomationPeer.cs
- SchemaElementDecl.cs
- CodeIdentifiers.cs
- PersonalizationState.cs
- MouseActionConverter.cs
- AccessDataSourceDesigner.cs
- WebPartCancelEventArgs.cs
- XsdValidatingReader.cs
- Object.cs
- SqlDataSourceCommandEventArgs.cs
- RequestCachePolicy.cs