Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- BamlBinaryWriter.cs
- ForwardPositionQuery.cs
- DocumentApplication.cs
- CollectionChangeEventArgs.cs
- UndoEngine.cs
- EnumType.cs
- CodeAttributeDeclarationCollection.cs
- CodeMemberEvent.cs
- DesignerValidatorAdapter.cs
- XmlSchemaFacet.cs
- MembershipSection.cs
- PageContent.cs
- ComMethodElement.cs
- ConfigurationManagerHelperFactory.cs
- objectquery_tresulttype.cs
- XmlArrayItemAttributes.cs
- Config.cs
- GridItemProviderWrapper.cs
- RegexMatchCollection.cs
- XPathSelectionIterator.cs
- DiscriminatorMap.cs
- IntSecurity.cs
- DocumentSchemaValidator.cs
- Int64Storage.cs
- StringExpressionSet.cs
- StylusPointPropertyInfoDefaults.cs
- SymbolType.cs
- Thread.cs
- LocalizableResourceBuilder.cs
- StackSpiller.Bindings.cs
- HwndSourceKeyboardInputSite.cs
- PropertyHelper.cs
- TypedElement.cs
- ClientScriptManager.cs
- SiteMembershipCondition.cs
- LocatorBase.cs
- DocumentGridPage.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- CustomLineCap.cs
- EventBindingService.cs
- NativeMethods.cs
- SelectManyQueryOperator.cs
- WebPartEditorApplyVerb.cs
- DurationConverter.cs
- Parallel.cs
- ReadOnlyDictionary.cs
- DrawingBrush.cs
- translator.cs
- DocumentsTrace.cs
- RemotingException.cs
- ManualResetEvent.cs
- ByeMessageCD1.cs
- ObjectCloneHelper.cs
- CreatingCookieEventArgs.cs
- ToolStripRenderEventArgs.cs
- UserInitiatedNavigationPermission.cs
- RadioButtonAutomationPeer.cs
- RangeEnumerable.cs
- Table.cs
- columnmapfactory.cs
- SafeEventLogReadHandle.cs
- FlowDocumentReaderAutomationPeer.cs
- UnsafePeerToPeerMethods.cs
- SecurityContextCookieSerializer.cs
- ColorTransformHelper.cs
- FixedPageProcessor.cs
- KeysConverter.cs
- PropertyConverter.cs
- SHA512.cs
- PersonalizableAttribute.cs
- MiniCustomAttributeInfo.cs
- SqlReorderer.cs
- cache.cs
- PeerInputChannelListener.cs
- ClickablePoint.cs
- WbemException.cs
- StandardOleMarshalObject.cs
- NegotiateStream.cs
- Debug.cs
- InheritedPropertyChangedEventArgs.cs
- Page.cs
- FileInfo.cs
- UnhandledExceptionEventArgs.cs
- SafeSecurityHandles.cs
- SafeSecurityHelper.cs
- FileNotFoundException.cs
- HttpResponseWrapper.cs
- FieldBuilder.cs
- MailMessage.cs
- AudienceUriMode.cs
- FormCollection.cs
- UserNameSecurityTokenAuthenticator.cs
- MenuBindingsEditorForm.cs
- AsymmetricSignatureDeformatter.cs
- InheritanceContextHelper.cs
- MessageDesigner.cs
- ErrorWrapper.cs
- DataGridViewLayoutData.cs
- ExpressionBuilder.cs
- ObjectPersistData.cs