Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- WaitForChangedResult.cs
- TaiwanLunisolarCalendar.cs
- ProgressBarAutomationPeer.cs
- MethodBuilder.cs
- BrowserCapabilitiesCodeGenerator.cs
- BufferBuilder.cs
- SocketPermission.cs
- AppliedDeviceFiltersEditor.cs
- Path.cs
- ModuleBuilder.cs
- EventHandlersDesigner.cs
- FieldNameLookup.cs
- PageBuildProvider.cs
- BasicKeyConstraint.cs
- GradientBrush.cs
- BaseParaClient.cs
- StringFunctions.cs
- FixedSOMPageElement.cs
- ResourceSet.cs
- ApplicationTrust.cs
- OdbcErrorCollection.cs
- AnnotationHelper.cs
- XmlSchemaAttribute.cs
- SafeUserTokenHandle.cs
- IdentityNotMappedException.cs
- QilInvoke.cs
- BasicHttpSecurity.cs
- AssociationSetMetadata.cs
- Helpers.cs
- InputBindingCollection.cs
- UnknownBitmapDecoder.cs
- ProviderConnectionPointCollection.cs
- WebPartCatalogAddVerb.cs
- DecimalAnimationBase.cs
- SecureEnvironment.cs
- DataGridViewRowEventArgs.cs
- PathFigure.cs
- NativeActivityTransactionContext.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- WebPartZone.cs
- TimeoutValidationAttribute.cs
- BasicExpressionVisitor.cs
- WebBrowserEvent.cs
- Ref.cs
- AsymmetricKeyExchangeDeformatter.cs
- WorkflowServiceHostFactory.cs
- RTLAwareMessageBox.cs
- WebColorConverter.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- FontFamily.cs
- IpcManager.cs
- ExpanderAutomationPeer.cs
- BitmapEffectInputData.cs
- ParentControlDesigner.cs
- FlowDocumentReaderAutomationPeer.cs
- ToolStripArrowRenderEventArgs.cs
- PkcsUtils.cs
- WebServicesSection.cs
- RectIndependentAnimationStorage.cs
- EntryWrittenEventArgs.cs
- ResourceSetExpression.cs
- DocumentViewer.cs
- SoapFault.cs
- SqlMultiplexer.cs
- KnownBoxes.cs
- SqlMultiplexer.cs
- GridViewItemAutomationPeer.cs
- EntityClassGenerator.cs
- WebAdminConfigurationHelper.cs
- Touch.cs
- Attributes.cs
- SmiRequestExecutor.cs
- MasterPageParser.cs
- UnknownWrapper.cs
- XmlSerializationWriter.cs
- ProtocolsConfiguration.cs
- CheckBoxFlatAdapter.cs
- ResourcePart.cs
- Property.cs
- PerformanceCounterCategory.cs
- X509LogoTypeExtension.cs
- MediaScriptCommandRoutedEventArgs.cs
- JpegBitmapEncoder.cs
- DiscreteKeyFrames.cs
- BasicExpandProvider.cs
- Socket.cs
- FileLevelControlBuilderAttribute.cs
- ListBoxItem.cs
- ProfileSettingsCollection.cs
- SqlTriggerAttribute.cs
- Simplifier.cs
- ConnectionsZoneDesigner.cs
- EditingScopeUndoUnit.cs
- XPathException.cs
- _UncName.cs
- ContractCodeDomInfo.cs
- SHA256Managed.cs
- _BaseOverlappedAsyncResult.cs
- CodeThrowExceptionStatement.cs
- IWorkflowDebuggerService.cs