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
- Behavior.cs
- Permission.cs
- ProviderBase.cs
- Scene3D.cs
- HttpHeaderCollection.cs
- WebConfigurationHost.cs
- DeviceSpecific.cs
- DataGridViewCellParsingEventArgs.cs
- ToolStripArrowRenderEventArgs.cs
- XmlDomTextWriter.cs
- Listbox.cs
- DataSourceControl.cs
- CellLabel.cs
- OraclePermissionAttribute.cs
- TextViewBase.cs
- FontWeightConverter.cs
- MimeXmlReflector.cs
- LineBreak.cs
- StorageComplexTypeMapping.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- _RequestLifetimeSetter.cs
- FileDataSourceCache.cs
- TableHeaderCell.cs
- LazyTextWriterCreator.cs
- SchemaTableOptionalColumn.cs
- RotateTransform3D.cs
- LinkButton.cs
- WebBaseEventKeyComparer.cs
- NameValueConfigurationCollection.cs
- WindowsPrincipal.cs
- CodeObjectCreateExpression.cs
- TablePattern.cs
- HttpDictionary.cs
- InputScopeConverter.cs
- Geometry.cs
- _NegoStream.cs
- StorageAssociationSetMapping.cs
- OutputCacheProfileCollection.cs
- ObjectCacheSettings.cs
- CompilationUnit.cs
- PresentationTraceSources.cs
- DropTarget.cs
- HtmlInputImage.cs
- Stack.cs
- DecoderReplacementFallback.cs
- RenameRuleObjectDialog.cs
- CalendarAutomationPeer.cs
- CheckableControlBaseAdapter.cs
- DataTemplateSelector.cs
- DateTimeOffsetConverter.cs
- SchemaManager.cs
- LiteralControl.cs
- InvalidDataException.cs
- DataSourceCacheDurationConverter.cs
- ThreadInterruptedException.cs
- OdbcConnectionFactory.cs
- DesignerDataSchemaClass.cs
- Utils.cs
- PropertyCollection.cs
- WindowsListViewItemStartMenu.cs
- TextEffectCollection.cs
- Section.cs
- DataPagerFieldCommandEventArgs.cs
- HttpProfileGroupBase.cs
- BinaryObjectReader.cs
- SHA512Cng.cs
- FaultHandlingFilter.cs
- TextPointer.cs
- StopStoryboard.cs
- ItemsPanelTemplate.cs
- WSHttpSecurityElement.cs
- DataGridCell.cs
- QueryCacheKey.cs
- compensatingcollection.cs
- ListenerAdapterBase.cs
- ListViewSortEventArgs.cs
- FontClient.cs
- Matrix3DStack.cs
- ThreadAbortException.cs
- PolyBezierSegment.cs
- UDPClient.cs
- MembershipAdapter.cs
- _HTTPDateParse.cs
- WindowsSecurityToken.cs
- DataGridRow.cs
- LabelLiteral.cs
- MenuItemBinding.cs
- QilVisitor.cs
- DataBindingList.cs
- PlaceHolder.cs
- SqlProviderManifest.cs
- remotingproxy.cs
- XmlSchemaElement.cs
- DropDownList.cs
- AndCondition.cs
- FormClosingEvent.cs
- IdentitySection.cs
- HitTestWithPointDrawingContextWalker.cs
- CustomWebEventKey.cs
- RoutedEventConverter.cs