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
- PackageProperties.cs
- IPHostEntry.cs
- ListBase.cs
- TextPointerBase.cs
- SecurityUtils.cs
- BitmapEffectGroup.cs
- Transform3D.cs
- RegularExpressionValidator.cs
- ColorMatrix.cs
- RootBuilder.cs
- DataServiceException.cs
- HtmlToClrEventProxy.cs
- AggregateNode.cs
- DnsPermission.cs
- NativeMethods.cs
- SiteOfOriginContainer.cs
- CodeTypeParameter.cs
- MonitoringDescriptionAttribute.cs
- TiffBitmapEncoder.cs
- Queue.cs
- DeploymentExceptionMapper.cs
- CompilationRelaxations.cs
- GPPOINTF.cs
- SynthesizerStateChangedEventArgs.cs
- SQLConvert.cs
- ResourceReferenceExpression.cs
- AppDomainGrammarProxy.cs
- CryptoStream.cs
- SecurityChannelFaultConverter.cs
- ImageBrush.cs
- SqlClientFactory.cs
- WorkflowMarkupElementEventArgs.cs
- QueryableFilterUserControl.cs
- RequestStatusBarUpdateEventArgs.cs
- SpoolingTaskBase.cs
- RoutedEventHandlerInfo.cs
- SkipStoryboardToFill.cs
- TextBox.cs
- HostExecutionContextManager.cs
- Screen.cs
- DataBinder.cs
- PageCodeDomTreeGenerator.cs
- BaseCodeDomTreeGenerator.cs
- TranslateTransform.cs
- Pair.cs
- InvalidWorkflowException.cs
- CustomTypeDescriptor.cs
- DefaultBindingPropertyAttribute.cs
- X509CertificateValidator.cs
- ControlBindingsCollection.cs
- WindowsTokenRoleProvider.cs
- ButtonColumn.cs
- ConfigurationElementCollection.cs
- HiddenFieldDesigner.cs
- UriSection.cs
- TypeDescriptor.cs
- QuaternionRotation3D.cs
- StsCommunicationException.cs
- Itemizer.cs
- ReversePositionQuery.cs
- XmlSchemaComplexType.cs
- XmlLinkedNode.cs
- TreeNodeBinding.cs
- PieceDirectory.cs
- CalendarDataBindingHandler.cs
- TimeSpanStorage.cs
- DbConnectionInternal.cs
- PerformanceCounterLib.cs
- TypeLibConverter.cs
- HttpListenerElement.cs
- CheckBoxPopupAdapter.cs
- EventLogPermissionEntryCollection.cs
- TypeNameConverter.cs
- AuthenticateEventArgs.cs
- SpeechAudioFormatInfo.cs
- CodeConstructor.cs
- unsafenativemethodsother.cs
- TypeRestriction.cs
- TabPageDesigner.cs
- Function.cs
- QilCloneVisitor.cs
- TextSelectionHighlightLayer.cs
- ResourceSet.cs
- FreezableDefaultValueFactory.cs
- SubpageParaClient.cs
- SchemaType.cs
- TemplateField.cs
- BitmapEffectGroup.cs
- MimeTypeMapper.cs
- BaseTemplateBuildProvider.cs
- HttpStreamXmlDictionaryReader.cs
- GridViewUpdateEventArgs.cs
- Clipboard.cs
- WebPartActionVerb.cs
- RepeaterItem.cs
- CustomAttributeBuilder.cs
- HttpBindingExtension.cs
- InstanceDataCollectionCollection.cs
- DragCompletedEventArgs.cs
- Shape.cs