Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Core / CSharp / System / Windows / Automation / Peers / GenericRootAutomationPeer.cs / 1 / 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
- Panel.cs
- ProfilePropertyMetadata.cs
- CompositeActivityMarkupSerializer.cs
- WebPartManager.cs
- GridViewCommandEventArgs.cs
- TextContainerChangeEventArgs.cs
- OuterGlowBitmapEffect.cs
- XmlSchemaSimpleContent.cs
- SendActivityDesignerTheme.cs
- WindowsScrollBar.cs
- WebPartCollection.cs
- ObjectDataSourceSelectingEventArgs.cs
- AbandonedMutexException.cs
- Int32Storage.cs
- Frame.cs
- ReadOnlyPermissionSet.cs
- HtmlInputCheckBox.cs
- CharEnumerator.cs
- WebReferenceCollection.cs
- DelegatedStream.cs
- ExceptionUtil.cs
- PublishLicense.cs
- InputScope.cs
- ActivityBindForm.Designer.cs
- CqlErrorHelper.cs
- Rectangle.cs
- ScriptControl.cs
- RecognitionResult.cs
- XmlSchemaProviderAttribute.cs
- AnnotationComponentManager.cs
- ConstraintStruct.cs
- ToolTip.cs
- HostingEnvironmentSection.cs
- Claim.cs
- FlowLayoutSettings.cs
- ViewManager.cs
- SmtpAuthenticationManager.cs
- Separator.cs
- KeySplineConverter.cs
- RequestCachePolicy.cs
- InputLanguageSource.cs
- Events.cs
- SizeChangedEventArgs.cs
- DBCSCodePageEncoding.cs
- EdmToObjectNamespaceMap.cs
- XPathPatternParser.cs
- SiteMapNodeItem.cs
- FederatedMessageSecurityOverHttp.cs
- OperatingSystem.cs
- BreakRecordTable.cs
- XmlAttributeOverrides.cs
- HitTestDrawingContextWalker.cs
- HttpCapabilitiesBase.cs
- RequiredFieldValidator.cs
- DataRelation.cs
- DbFunctionCommandTree.cs
- DBDataPermissionAttribute.cs
- AtomPub10CategoriesDocumentFormatter.cs
- IndentedTextWriter.cs
- AssemblyNameProxy.cs
- BuildProviderInstallComponent.cs
- TransactionManager.cs
- StylusLogic.cs
- cookieexception.cs
- SerializationStore.cs
- BitmapImage.cs
- QueryCursorEventArgs.cs
- SingleAnimationUsingKeyFrames.cs
- PropVariant.cs
- CustomValidator.cs
- DelegatingTypeDescriptionProvider.cs
- CodeRegionDirective.cs
- DataControlLinkButton.cs
- SqlGenericUtil.cs
- Cloud.cs
- LineServices.cs
- ExpressionEditorSheet.cs
- DiscoveryEndpoint.cs
- DesignerActionMethodItem.cs
- handlecollector.cs
- NumberFormatter.cs
- TreeBuilderBamlTranslator.cs
- ImageField.cs
- CodeCommentStatement.cs
- FixedPageProcessor.cs
- ProcessInfo.cs
- TiffBitmapEncoder.cs
- ReceiveCompletedEventArgs.cs
- DataTableMapping.cs
- DataGridViewRowCancelEventArgs.cs
- EventLogInformation.cs
- UriSectionData.cs
- StructuredTypeInfo.cs
- HtmlFormWrapper.cs
- TextServicesLoader.cs
- PriorityBindingExpression.cs
- DispatchOperation.cs
- ChineseLunisolarCalendar.cs
- DataControlImageButton.cs
- PlainXmlSerializer.cs