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
- ByeMessage11.cs
- Matrix.cs
- SafeCryptoHandles.cs
- ControlBuilder.cs
- PatternMatcher.cs
- SdlChannelSink.cs
- Error.cs
- XamlReader.cs
- _BufferOffsetSize.cs
- UriSection.cs
- ReturnType.cs
- DiagnosticSection.cs
- NativeMethods.cs
- IList.cs
- CompensateDesigner.cs
- VerificationException.cs
- RenderOptions.cs
- StructuredTypeEmitter.cs
- OdbcDataReader.cs
- ReadWriteObjectLock.cs
- Grid.cs
- XmlNodeWriter.cs
- GridSplitterAutomationPeer.cs
- HtmlControl.cs
- ProtectedConfiguration.cs
- DiagnosticTrace.cs
- HotCommands.cs
- TemplateBindingExtension.cs
- SystemIcmpV4Statistics.cs
- TableSectionStyle.cs
- TextViewDesigner.cs
- BCLDebug.cs
- XmlILConstructAnalyzer.cs
- SystemBrushes.cs
- DispatchChannelSink.cs
- ColorTranslator.cs
- PointUtil.cs
- TextServicesCompartmentContext.cs
- ListDictionary.cs
- WorkflowRequestContext.cs
- IndicCharClassifier.cs
- DeclarativeCatalogPart.cs
- SelectorAutomationPeer.cs
- ProfileModule.cs
- TypeElementCollection.cs
- FocusChangedEventArgs.cs
- SyndicationElementExtensionCollection.cs
- ExtensionDataObject.cs
- InlineObject.cs
- QuaternionAnimationBase.cs
- TaskResultSetter.cs
- HiddenField.cs
- GPPOINTF.cs
- UIElementIsland.cs
- CodeAccessSecurityEngine.cs
- DescriptionCreator.cs
- SqlNode.cs
- XmlCDATASection.cs
- CodeSnippetCompileUnit.cs
- PathFigureCollection.cs
- SerializationInfoEnumerator.cs
- CustomBindingCollectionElement.cs
- LicenseProviderAttribute.cs
- ArraySegment.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- XPathNavigator.cs
- HMAC.cs
- JsonWriter.cs
- MessageQueueTransaction.cs
- ZipIOLocalFileHeader.cs
- FacetValues.cs
- TextServicesProperty.cs
- IndexerNameAttribute.cs
- Thickness.cs
- MSAAWinEventWrap.cs
- XmlSchemaCompilationSettings.cs
- SourceFileInfo.cs
- SplitterEvent.cs
- categoryentry.cs
- ExpressionList.cs
- SettingsPropertyWrongTypeException.cs
- XmlSchemaSearchPattern.cs
- ConfigurationLocation.cs
- ConfigurationSchemaErrors.cs
- Size3DValueSerializer.cs
- GridViewPageEventArgs.cs
- TextEditorSelection.cs
- XmlAnyElementAttributes.cs
- PackageFilter.cs
- XmlQueryOutput.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- BuildProvidersCompiler.cs
- DataGridViewCellEventArgs.cs
- VisualTreeUtils.cs
- DataStorage.cs
- MetadataItem_Static.cs
- MultiDataTrigger.cs
- BrowserCapabilitiesCodeGenerator.cs
- XslTransform.cs
- ComponentEditorForm.cs