Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Automation / Peers / GenericRootAutomationPeer.cs / 1305600 / GenericRootAutomationPeer.cs
using System; using System.Runtime.InteropServices; using System.Security; using System.Security.Permissions; using System.Text; using System.Windows; using System.Windows.Interop; using System.Windows.Media; using System.ComponentModel; using MS.Internal; using MS.Win32; // Used to support the warnings disabled below #pragma warning disable 1634, 1691 namespace System.Windows.Automation.Peers { /// public class GenericRootAutomationPeer : UIElementAutomationPeer { /// public GenericRootAutomationPeer(UIElement owner): base(owner) {} /// override protected string GetClassNameCore() { return "Pane"; } /// override protected AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.Pane; } /// ////// Critical: As this accesses Handle /// TreatAsSafe: Returning the Window Title is considered safe - discussed on Automation TA review /// [SecurityCritical,SecurityTreatAsSafe] override protected string GetNameCore() { string name = base.GetNameCore(); if(name == string.Empty) { IntPtr hwnd = this.Hwnd; if(hwnd != IntPtr.Zero) { try { StringBuilder sb = new StringBuilder(512); //This method elevates via SuppressUnmanadegCodeSecurity and throws Win32Exception on GetLastError UnsafeNativeMethods.GetWindowText(new HandleRef(null, hwnd), sb, sb.Capacity); name = sb.ToString(); } // Allow empty catch statements. #pragma warning disable 56502 catch(Win32Exception) {} // Disallow empty catch statements. #pragma warning restore 56502 if (name == null) name = string.Empty; } } return name; } /// ////// Critical as this method accesses critical data. /// TreatAsSafe - window bounds by themselves is considered safe. /// [SecurityCritical, SecurityTreatAsSafe ] override protected Rect GetBoundingRectangleCore() { Rect bounds = new Rect(0,0,0,0); IntPtr hwnd = this.Hwnd; if(hwnd != IntPtr.Zero) { NativeMethods.RECT rc = new NativeMethods.RECT(0,0,0,0); try { //This method elevates via SuppressUnmanadegCodeSecurity and throws Win32Exception on GetLastError SafeNativeMethods.GetWindowRect(new HandleRef(null, hwnd), ref rc); } // Allow empty catch statements. #pragma warning disable 56502 catch(Win32Exception) {} // Disallow empty catch statements. #pragma warning restore 56502 bounds = new Rect(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top); } return bounds; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Runtime.InteropServices; using System.Security; using System.Security.Permissions; using System.Text; using System.Windows; using System.Windows.Interop; using System.Windows.Media; using System.ComponentModel; using MS.Internal; using MS.Win32; // Used to support the warnings disabled below #pragma warning disable 1634, 1691 namespace System.Windows.Automation.Peers { /// public class GenericRootAutomationPeer : UIElementAutomationPeer { /// public GenericRootAutomationPeer(UIElement owner): base(owner) {} /// override protected string GetClassNameCore() { return "Pane"; } /// override protected AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.Pane; } /// ////// Critical: As this accesses Handle /// TreatAsSafe: Returning the Window Title is considered safe - discussed on Automation TA review /// [SecurityCritical,SecurityTreatAsSafe] override protected string GetNameCore() { string name = base.GetNameCore(); if(name == string.Empty) { IntPtr hwnd = this.Hwnd; if(hwnd != IntPtr.Zero) { try { StringBuilder sb = new StringBuilder(512); //This method elevates via SuppressUnmanadegCodeSecurity and throws Win32Exception on GetLastError UnsafeNativeMethods.GetWindowText(new HandleRef(null, hwnd), sb, sb.Capacity); name = sb.ToString(); } // Allow empty catch statements. #pragma warning disable 56502 catch(Win32Exception) {} // Disallow empty catch statements. #pragma warning restore 56502 if (name == null) name = string.Empty; } } return name; } /// ////// Critical as this method accesses critical data. /// TreatAsSafe - window bounds by themselves is considered safe. /// [SecurityCritical, SecurityTreatAsSafe ] override protected Rect GetBoundingRectangleCore() { Rect bounds = new Rect(0,0,0,0); IntPtr hwnd = this.Hwnd; if(hwnd != IntPtr.Zero) { NativeMethods.RECT rc = new NativeMethods.RECT(0,0,0,0); try { //This method elevates via SuppressUnmanadegCodeSecurity and throws Win32Exception on GetLastError SafeNativeMethods.GetWindowRect(new HandleRef(null, hwnd), ref rc); } // Allow empty catch statements. #pragma warning disable 56502 catch(Win32Exception) {} // Disallow empty catch statements. #pragma warning restore 56502 bounds = new Rect(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top); } return bounds; } } } // 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
- DurableServiceAttribute.cs
- WSMessageEncoding.cs
- SqlAliaser.cs
- ToolstripProfessionalRenderer.cs
- EventSetter.cs
- WorkflowApplicationEventArgs.cs
- TreeNode.cs
- DataBoundControlHelper.cs
- WizardStepBase.cs
- KeyTime.cs
- CodeGroup.cs
- TreeChangeInfo.cs
- SequentialWorkflowHeaderFooter.cs
- SiteMapProvider.cs
- ProfileSection.cs
- EnvelopedPkcs7.cs
- SqlDataSourceCache.cs
- HashHelper.cs
- StyleCollection.cs
- LabelAutomationPeer.cs
- XmlAttributeOverrides.cs
- XPathItem.cs
- PermissionSet.cs
- IgnoreFileBuildProvider.cs
- FontFamilyConverter.cs
- EntityKeyElement.cs
- Matrix.cs
- XmlWriterSettings.cs
- SoapSchemaMember.cs
- ScriptRef.cs
- EndEvent.cs
- ThreadStateException.cs
- OrderToken.cs
- RuntimeCompatibilityAttribute.cs
- Cursors.cs
- ImageMapEventArgs.cs
- TextRunProperties.cs
- ModuleElement.cs
- WindowsGraphicsWrapper.cs
- JumpPath.cs
- InputGestureCollection.cs
- FastPropertyAccessor.cs
- XmlLanguageConverter.cs
- ToolStripContentPanel.cs
- WebPartMinimizeVerb.cs
- WorkflowMessageEventHandler.cs
- CommentAction.cs
- CookieHandler.cs
- EntityDataSourceState.cs
- RectAnimationBase.cs
- PersistStreamTypeWrapper.cs
- ProviderBase.cs
- SocketException.cs
- MulticastOption.cs
- COM2IManagedPerPropertyBrowsingHandler.cs
- DataGridViewRowsAddedEventArgs.cs
- FormViewInsertEventArgs.cs
- AspNetHostingPermission.cs
- GroupQuery.cs
- TrustSection.cs
- DataRowExtensions.cs
- ProxyWebPart.cs
- FastEncoderWindow.cs
- ListControl.cs
- SetStateEventArgs.cs
- ValidationRule.cs
- sqlmetadatafactory.cs
- XPathAncestorQuery.cs
- SecurityStandardsManager.cs
- SimpleBitVector32.cs
- sqlcontext.cs
- NamespaceInfo.cs
- DataGridViewCellValidatingEventArgs.cs
- DataGridViewDataErrorEventArgs.cs
- QilNode.cs
- TableLayoutColumnStyleCollection.cs
- TrustManagerPromptUI.cs
- ExpandoClass.cs
- FrameworkElementAutomationPeer.cs
- DataGridViewLinkCell.cs
- AnnotationResource.cs
- HwndMouseInputProvider.cs
- BoundPropertyEntry.cs
- Compiler.cs
- TemplateManager.cs
- DrawingVisual.cs
- XmlValidatingReaderImpl.cs
- SemanticBasicElement.cs
- InvalidContentTypeException.cs
- DbException.cs
- AdRotator.cs
- TabletDeviceInfo.cs
- SHA512.cs
- XPathQilFactory.cs
- AppDomain.cs
- TouchPoint.cs
- IndentedWriter.cs
- InternalResources.cs
- DictionaryBase.cs
- SingleConverter.cs