Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Automation / Peers / WindowAutomationPeer.cs / 1305600 / WindowAutomationPeer.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 WindowAutomationPeer : FrameworkElementAutomationPeer
{
///
public WindowAutomationPeer(Window owner): base(owner)
{}
///
override protected string GetClassNameCore()
{
return "Window";
}
///
///
/// 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)
{
Window window = (Window)Owner;
if(!window.IsSourceWindowNull)
{
StringBuilder sb = new StringBuilder(512);
UnsafeNativeMethods.GetWindowText(new HandleRef(null, window.CriticalHandle), sb, sb.Capacity);
name = sb.ToString();
if (name == null)
name = string.Empty;
}
}
return name;
}
///
override protected AutomationControlType GetAutomationControlTypeCore()
{
return AutomationControlType.Window;
}
///
///
/// Critical as this method accesses critical data.
/// TreatAsSafe - window bounds by themselves is considered safe.
///
[SecurityCritical, SecurityTreatAsSafe ]
override protected Rect GetBoundingRectangleCore()
{
Window window = (Window)Owner;
Rect bounds = new Rect(0,0,0,0);
if(!window.IsSourceWindowNull)
{
NativeMethods.RECT rc = new NativeMethods.RECT(0,0,0,0);
IntPtr windowHandle = window.CriticalHandle;
if(windowHandle != IntPtr.Zero) //it is Zero on a window that was just closed
{
try { SafeNativeMethods.GetWindowRect(new HandleRef(null, windowHandle), 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 WindowAutomationPeer : FrameworkElementAutomationPeer
{
///
public WindowAutomationPeer(Window owner): base(owner)
{}
///
override protected string GetClassNameCore()
{
return "Window";
}
///
///
/// 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)
{
Window window = (Window)Owner;
if(!window.IsSourceWindowNull)
{
StringBuilder sb = new StringBuilder(512);
UnsafeNativeMethods.GetWindowText(new HandleRef(null, window.CriticalHandle), sb, sb.Capacity);
name = sb.ToString();
if (name == null)
name = string.Empty;
}
}
return name;
}
///
override protected AutomationControlType GetAutomationControlTypeCore()
{
return AutomationControlType.Window;
}
///
///
/// Critical as this method accesses critical data.
/// TreatAsSafe - window bounds by themselves is considered safe.
///
[SecurityCritical, SecurityTreatAsSafe ]
override protected Rect GetBoundingRectangleCore()
{
Window window = (Window)Owner;
Rect bounds = new Rect(0,0,0,0);
if(!window.IsSourceWindowNull)
{
NativeMethods.RECT rc = new NativeMethods.RECT(0,0,0,0);
IntPtr windowHandle = window.CriticalHandle;
if(windowHandle != IntPtr.Zero) //it is Zero on a window that was just closed
{
try { SafeNativeMethods.GetWindowRect(new HandleRef(null, windowHandle), 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
- DataGridViewLinkCell.cs
- RangeBaseAutomationPeer.cs
- XmlArrayItemAttributes.cs
- SerializationInfoEnumerator.cs
- Object.cs
- ByeMessageApril2005.cs
- ContextMarshalException.cs
- ParentUndoUnit.cs
- Keyboard.cs
- LeafCellTreeNode.cs
- Int32Storage.cs
- PocoPropertyAccessorStrategy.cs
- ExceptionHelpers.cs
- AttributeInfo.cs
- PreservationFileWriter.cs
- Panel.cs
- TextSimpleMarkerProperties.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- TokenBasedSet.cs
- RequiredFieldValidator.cs
- ManagementOperationWatcher.cs
- XmlSchemaExternal.cs
- DatatypeImplementation.cs
- InkCanvasInnerCanvas.cs
- RetrieveVirtualItemEventArgs.cs
- TreeNodeSelectionProcessor.cs
- ImageSourceValueSerializer.cs
- smtpconnection.cs
- ToolStripContainer.cs
- OleDbRowUpdatedEvent.cs
- SmtpAuthenticationManager.cs
- InvalidFilterCriteriaException.cs
- RenderOptions.cs
- CodeLinePragma.cs
- ConfigurationSectionCollection.cs
- NullableDoubleAverageAggregationOperator.cs
- NotImplementedException.cs
- WindowsTab.cs
- CompModSwitches.cs
- GridViewColumnHeaderAutomationPeer.cs
- HotCommands.cs
- SmtpDateTime.cs
- OracleException.cs
- DataChangedEventManager.cs
- ExternalFile.cs
- PropertyValidationContext.cs
- PeerMaintainer.cs
- TabPage.cs
- ActivityMarkupSerializationProvider.cs
- Highlights.cs
- PackUriHelper.cs
- ConfigurationManagerHelperFactory.cs
- TableLayoutStyle.cs
- TimeoutException.cs
- DocumentXPathNavigator.cs
- NonVisualControlAttribute.cs
- IndexerNameAttribute.cs
- UTF7Encoding.cs
- NavigationProperty.cs
- input.cs
- FlatButtonAppearance.cs
- TakeOrSkipWhileQueryOperator.cs
- Transform3DGroup.cs
- HttpModuleCollection.cs
- UdpDiscoveryEndpoint.cs
- AssemblyUtil.cs
- HScrollProperties.cs
- TextTabProperties.cs
- HotCommands.cs
- Parser.cs
- MessageSecurityOverMsmq.cs
- documentsequencetextcontainer.cs
- SoapEnumAttribute.cs
- CustomTrackingRecord.cs
- LinearQuaternionKeyFrame.cs
- MessageLoggingElement.cs
- ComMethodElement.cs
- BindStream.cs
- FunctionDefinition.cs
- ServiceDurableInstanceContextProvider.cs
- UnsafeNativeMethodsPenimc.cs
- EnumCodeDomSerializer.cs
- AdornerHitTestResult.cs
- FormViewPageEventArgs.cs
- Figure.cs
- ConnectionManagementSection.cs
- SecurityHelper.cs
- ImageDrawing.cs
- PackageRelationshipSelector.cs
- dbenumerator.cs
- GenericTypeParameterBuilder.cs
- TextServicesContext.cs
- RotateTransform3D.cs
- ConfigurationLocation.cs
- QuaternionRotation3D.cs
- ScaleTransform3D.cs
- TextureBrush.cs
- DeobfuscatingStream.cs
- DefaultAssemblyResolver.cs
- WebPartDeleteVerb.cs