Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ExpandedWrapper.cs
- BitmapSource.cs
- TemplatedAdorner.cs
- Expressions.cs
- ReadOnlyDataSource.cs
- KeyValuePair.cs
- MultiTrigger.cs
- TypographyProperties.cs
- OrderedEnumerableRowCollection.cs
- Int64Storage.cs
- BinaryWriter.cs
- ISFTagAndGuidCache.cs
- CookieProtection.cs
- HttpHeaderCollection.cs
- ContextInformation.cs
- ScaleTransform.cs
- AdPostCacheSubstitution.cs
- DelegatingStream.cs
- SqlTrackingWorkflowInstance.cs
- ViewGenResults.cs
- HMACSHA1.cs
- CardSpaceShim.cs
- RegexGroupCollection.cs
- CssTextWriter.cs
- DictationGrammar.cs
- ProfileProvider.cs
- Debugger.cs
- ResourcePermissionBaseEntry.cs
- UTF7Encoding.cs
- CompositeControl.cs
- CommandManager.cs
- TypeDescriptorContext.cs
- ImageButton.cs
- ModelTreeEnumerator.cs
- DataSet.cs
- RtfControlWordInfo.cs
- VideoDrawing.cs
- ClonableStack.cs
- ProfileManager.cs
- DataGridViewIntLinkedList.cs
- StylusPointProperties.cs
- XmlSchemaSimpleTypeUnion.cs
- ActivationServices.cs
- OleDbTransaction.cs
- _Rfc2616CacheValidators.cs
- XmlDomTextWriter.cs
- BaseUriHelper.cs
- IpcManager.cs
- Point3DCollection.cs
- CompositeFontFamily.cs
- Documentation.cs
- SmtpReplyReaderFactory.cs
- CommandManager.cs
- BulletDecorator.cs
- DeviceSpecificChoiceCollection.cs
- BypassElementCollection.cs
- SimpleHandlerFactory.cs
- ReadonlyMessageFilter.cs
- TiffBitmapEncoder.cs
- ComponentChangingEvent.cs
- Misc.cs
- CheckBoxFlatAdapter.cs
- TableLayoutPanel.cs
- CompoundFileStreamReference.cs
- QilPatternVisitor.cs
- SpecialNameAttribute.cs
- XmlSchemaSet.cs
- SByteStorage.cs
- ToolTipAutomationPeer.cs
- MetadataPropertyAttribute.cs
- DoubleLinkListEnumerator.cs
- BitStack.cs
- ExternalException.cs
- WebPartCatalogAddVerb.cs
- EventRoute.cs
- XmlKeywords.cs
- XPathNodeIterator.cs
- ListViewDeleteEventArgs.cs
- FrameworkPropertyMetadata.cs
- XmlWriterTraceListener.cs
- JavascriptXmlWriterWrapper.cs
- DbParameterCollectionHelper.cs
- DependencyPropertyKey.cs
- ComboBoxRenderer.cs
- BuilderPropertyEntry.cs
- UiaCoreTypesApi.cs
- ToolStripSeparatorRenderEventArgs.cs
- FileVersionInfo.cs
- DPCustomTypeDescriptor.cs
- xmlglyphRunInfo.cs
- Axis.cs
- SecurityPolicySection.cs
- VisualStyleRenderer.cs
- TableColumnCollection.cs
- DockingAttribute.cs
- ActivityExecutorDelegateInfo.cs
- Documentation.cs
- PackWebRequest.cs
- BindingBase.cs
- RequestStatusBarUpdateEventArgs.cs