Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- Pen.cs
- RequestResizeEvent.cs
- OdbcConnectionPoolProviderInfo.cs
- AnonymousIdentificationModule.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- ConnectionPoint.cs
- Propagator.ExtentPlaceholderCreator.cs
- RoleServiceManager.cs
- XmlLanguageConverter.cs
- XmlAttributes.cs
- ParentControlDesigner.cs
- Models.cs
- UserNameSecurityToken.cs
- FilterQuery.cs
- SQLString.cs
- Win32SafeHandles.cs
- Duration.cs
- ProviderSettings.cs
- TextEffect.cs
- RemoteWebConfigurationHostServer.cs
- QueryContinueDragEventArgs.cs
- MemberDomainMap.cs
- XmlObjectSerializerReadContextComplex.cs
- SQLChars.cs
- Resources.Designer.cs
- ActivityDesignerLayoutSerializers.cs
- LinkLabel.cs
- InstalledVoice.cs
- FontResourceCache.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- RegexCaptureCollection.cs
- DNS.cs
- SymbolMethod.cs
- ToolStripDropDownClosingEventArgs.cs
- IChannel.cs
- SafeSecurityHelper.cs
- ProtocolViolationException.cs
- EndCreateSecurityTokenRequest.cs
- EntityDataSourceChangingEventArgs.cs
- Main.cs
- DeadCharTextComposition.cs
- PerfCounters.cs
- DefaultTraceListener.cs
- CoTaskMemHandle.cs
- LinearQuaternionKeyFrame.cs
- MemberNameValidator.cs
- GrammarBuilderBase.cs
- UpDownBase.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- Substitution.cs
- Image.cs
- AdapterDictionary.cs
- ReadWriteObjectLock.cs
- TerminateDesigner.cs
- _ProxyChain.cs
- RecipientServiceModelSecurityTokenRequirement.cs
- DbParameterCollection.cs
- RepeatBehavior.cs
- GraphicsState.cs
- _LazyAsyncResult.cs
- PropagatorResult.cs
- Font.cs
- XmlParserContext.cs
- Size.cs
- ListItem.cs
- WriteFileContext.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- SoapTypeAttribute.cs
- DocumentPageView.cs
- EmptyCollection.cs
- MailWebEventProvider.cs
- LocalizedNameDescriptionPair.cs
- DataObject.cs
- IItemContainerGenerator.cs
- TextRange.cs
- SHA512Managed.cs
- FamilyTypefaceCollection.cs
- CollectionChange.cs
- SemanticKeyElement.cs
- DrawingCollection.cs
- Inline.cs
- CommandBinding.cs
- shaperfactory.cs
- UidManager.cs
- TabControl.cs
- DataGridViewCellCancelEventArgs.cs
- FixedPageStructure.cs
- WebPartZoneBase.cs
- RelOps.cs
- ComAdminWrapper.cs
- StringReader.cs
- ValueTypeFixupInfo.cs
- __TransparentProxy.cs
- ListenerElementsCollection.cs
- XMLDiffLoader.cs
- ColumnMapProcessor.cs
- ParallelTimeline.cs
- GregorianCalendarHelper.cs
- AsmxEndpointPickerExtension.cs
- ConfigurationManagerHelperFactory.cs