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
- CompilationUtil.cs
- NameSpaceExtractor.cs
- PatternMatcher.cs
- DeleteIndexBinder.cs
- PageCodeDomTreeGenerator.cs
- ReferentialConstraint.cs
- CalendarTable.cs
- COM2Enum.cs
- ValueType.cs
- PrimarySelectionAdorner.cs
- WebPartDisplayModeCollection.cs
- SrgsElementFactory.cs
- TreeChangeInfo.cs
- DependencyProperty.cs
- FreeFormDragDropManager.cs
- Command.cs
- SortFieldComparer.cs
- HostProtectionPermission.cs
- Form.cs
- WebPartTracker.cs
- Animatable.cs
- EntityConnection.cs
- QueryGenerator.cs
- OperatorExpressions.cs
- SqlLiftWhereClauses.cs
- ExpressionBindingCollection.cs
- SqlParameter.cs
- PermissionSet.cs
- WebPartCancelEventArgs.cs
- EntityDataSourceStatementEditorForm.cs
- StateManagedCollection.cs
- ListViewPagedDataSource.cs
- ConfigurationValidatorBase.cs
- InputLanguageEventArgs.cs
- PrivateFontCollection.cs
- LassoHelper.cs
- CodeTypeParameter.cs
- XMLUtil.cs
- Brushes.cs
- DbDataSourceEnumerator.cs
- SQLStringStorage.cs
- XsdBuilder.cs
- URLAttribute.cs
- PenThreadWorker.cs
- ContextDataSourceContextData.cs
- ConfigXmlWhitespace.cs
- ImageClickEventArgs.cs
- SingleAnimationUsingKeyFrames.cs
- XmlDataSourceView.cs
- TextDecorationCollectionConverter.cs
- DirectoryNotFoundException.cs
- AmbientProperties.cs
- BaseTemplateCodeDomTreeGenerator.cs
- LocatorPartList.cs
- NativeMethods.cs
- TextServicesCompartment.cs
- SoapAttributeAttribute.cs
- columnmapkeybuilder.cs
- NumericUpDownAccelerationCollection.cs
- TypeUsage.cs
- BypassElementCollection.cs
- WebControlAdapter.cs
- WorkerRequest.cs
- DefaultObjectMappingItemCollection.cs
- WebProxyScriptElement.cs
- Switch.cs
- PictureBox.cs
- BinarySecretKeyIdentifierClause.cs
- CodePageEncoding.cs
- IDReferencePropertyAttribute.cs
- ModelPropertyDescriptor.cs
- FixedPageProcessor.cs
- ToolTipAutomationPeer.cs
- DataControlPagerLinkButton.cs
- SymLanguageType.cs
- TraceRecord.cs
- HtmlTableRowCollection.cs
- ExecutionContext.cs
- CodeConstructor.cs
- SaveFileDialog.cs
- printdlgexmarshaler.cs
- ReaderWriterLockWrapper.cs
- EncryptedReference.cs
- BuildResultCache.cs
- BitFlagsGenerator.cs
- StaticFileHandler.cs
- AddingNewEventArgs.cs
- M3DUtil.cs
- NullableDecimalMinMaxAggregationOperator.cs
- EventDriven.cs
- WorkflowServiceOperationListItem.cs
- CatalogZoneBase.cs
- DataGridViewCellStyle.cs
- SecurityManager.cs
- Typeface.cs
- EntityKeyElement.cs
- FixedSOMLineCollection.cs
- IChannel.cs
- TextBounds.cs
- DataGridColumnHeaderCollection.cs