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
- FragmentNavigationEventArgs.cs
- PackWebRequestFactory.cs
- XmlName.cs
- ListViewDataItem.cs
- ProtocolViolationException.cs
- TableSectionStyle.cs
- ClientSettings.cs
- HttpDebugHandler.cs
- CompiledQueryCacheEntry.cs
- DescendantQuery.cs
- GraphicsState.cs
- CodeRemoveEventStatement.cs
- ObjectDisposedException.cs
- SafeNativeMethods.cs
- Convert.cs
- LocalizabilityAttribute.cs
- InputLanguageCollection.cs
- Crypto.cs
- unsafenativemethodstextservices.cs
- ConfigurationLockCollection.cs
- SafeNativeMethods.cs
- SiteMap.cs
- HybridObjectCache.cs
- InstancePersistenceEvent.cs
- TextPointerBase.cs
- KeyNotFoundException.cs
- _ChunkParse.cs
- ThousandthOfEmRealDoubles.cs
- SqlDataSourceFilteringEventArgs.cs
- FormsAuthenticationConfiguration.cs
- XmlKeywords.cs
- ButtonFlatAdapter.cs
- PropertyEmitterBase.cs
- RtfFormatStack.cs
- PrivilegeNotHeldException.cs
- Membership.cs
- QilValidationVisitor.cs
- mediaeventargs.cs
- EntityDataSourceDesignerHelper.cs
- SafeRegistryKey.cs
- DesignerAutoFormatCollection.cs
- QilFunction.cs
- StrongNameUtility.cs
- MimeAnyImporter.cs
- WebPartConnectionsCloseVerb.cs
- StylusPlugInCollection.cs
- EventPrivateKey.cs
- SymDocumentType.cs
- Empty.cs
- TextServicesPropertyRanges.cs
- FileClassifier.cs
- SiteMapHierarchicalDataSourceView.cs
- Timeline.cs
- AssemblyBuilder.cs
- DateTimeFormatInfo.cs
- HttpValueCollection.cs
- SimpleTypeResolver.cs
- ErrorLog.cs
- NativeMethods.cs
- ActivityInstanceMap.cs
- BitmapEffectState.cs
- CollaborationHelperFunctions.cs
- RolePrincipal.cs
- TextHidden.cs
- VariableBinder.cs
- UserPreferenceChangedEventArgs.cs
- MissingFieldException.cs
- Button.cs
- IncrementalReadDecoders.cs
- TextTreeInsertElementUndoUnit.cs
- HTMLTextWriter.cs
- ProfileSettings.cs
- SizeConverter.cs
- Classification.cs
- Fonts.cs
- OrderedDictionaryStateHelper.cs
- DataGridViewColumnTypeEditor.cs
- SqlUserDefinedAggregateAttribute.cs
- ContourSegment.cs
- ServiceMetadataBehavior.cs
- Helpers.cs
- VersionValidator.cs
- JapaneseCalendar.cs
- Vector3DCollection.cs
- UserMapPath.cs
- RSAPKCS1KeyExchangeFormatter.cs
- RectangleConverter.cs
- StylusPlugInCollection.cs
- Stack.cs
- CodeBinaryOperatorExpression.cs
- XmlSchemaElement.cs
- SqlCrossApplyToCrossJoin.cs
- TdsParameterSetter.cs
- XmlWrappingReader.cs
- MDIWindowDialog.cs
- AttachedAnnotation.cs
- OdbcCommandBuilder.cs
- SoundPlayer.cs
- EtwProvider.cs
- XamlPoint3DCollectionSerializer.cs