Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- Application.cs
- Int32CAMarshaler.cs
- PenThreadWorker.cs
- TargetConverter.cs
- MD5HashHelper.cs
- LazyTextWriterCreator.cs
- ObjectViewEntityCollectionData.cs
- TemplatePropertyEntry.cs
- ProcessThread.cs
- UrlMappingsSection.cs
- VisemeEventArgs.cs
- TextRange.cs
- GlobalItem.cs
- LoadedOrUnloadedOperation.cs
- BindingMAnagerBase.cs
- NullRuntimeConfig.cs
- ObsoleteAttribute.cs
- DataPagerFieldItem.cs
- FormsAuthenticationTicket.cs
- WebPartZoneBase.cs
- WinOEToolBoxItem.cs
- QueryStringConverter.cs
- DodSequenceMerge.cs
- HwndSubclass.cs
- KernelTypeValidation.cs
- ExternalException.cs
- DependencyPropertyChangedEventArgs.cs
- PersistenceProviderDirectory.cs
- rsa.cs
- DelimitedListTraceListener.cs
- ComponentCommands.cs
- UIPermission.cs
- DbQueryCommandTree.cs
- StrokeIntersection.cs
- FtpRequestCacheValidator.cs
- RuntimeEnvironment.cs
- IsolatedStorageFile.cs
- DynamicValidator.cs
- EndpointInfoCollection.cs
- ValidatingReaderNodeData.cs
- MD5.cs
- ListViewItem.cs
- ProfileGroupSettings.cs
- PerfCounters.cs
- ContextItemManager.cs
- HttpInputStream.cs
- CultureSpecificStringDictionary.cs
- BinarySerializer.cs
- SkinIDTypeConverter.cs
- PriorityBinding.cs
- MimeMapping.cs
- PrefixHandle.cs
- EdgeModeValidation.cs
- Typeface.cs
- ResourceAttributes.cs
- OptimalTextSource.cs
- Model3D.cs
- _Rfc2616CacheValidators.cs
- SqlConnectionStringBuilder.cs
- UriParserTemplates.cs
- MultipartContentParser.cs
- WebReferenceOptions.cs
- BooleanSwitch.cs
- QueryContinueDragEventArgs.cs
- ImageList.cs
- SizeAnimationBase.cs
- WinEventQueueItem.cs
- PackWebRequest.cs
- ArgumentOutOfRangeException.cs
- PageParserFilter.cs
- ExecutionEngineException.cs
- StreamInfo.cs
- EntityContainer.cs
- CompilerErrorCollection.cs
- SourceFilter.cs
- XmlDataImplementation.cs
- PointAnimationUsingKeyFrames.cs
- DesignTimeVisibleAttribute.cs
- OracleMonthSpan.cs
- ExtensibleClassFactory.cs
- SqlSelectStatement.cs
- LogStore.cs
- SemaphoreFullException.cs
- Converter.cs
- TCEAdapterGenerator.cs
- ButtonFlatAdapter.cs
- ManipulationVelocities.cs
- SurrogateEncoder.cs
- ConsoleTraceListener.cs
- ObjectDataSourceEventArgs.cs
- FixUpCollection.cs
- MappingMetadataHelper.cs
- Transform3DGroup.cs
- TableProviderWrapper.cs
- odbcmetadatafactory.cs
- DependsOnAttribute.cs
- ListBoxItem.cs
- ListComponentEditorPage.cs
- ProcessHost.cs
- IncrementalReadDecoders.cs