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
- DeleteCardRequest.cs
- DbModificationClause.cs
- UmAlQuraCalendar.cs
- ButtonBase.cs
- ToolBar.cs
- ZoneLinkButton.cs
- DesignerAttribute.cs
- PasswordRecovery.cs
- TypedAsyncResult.cs
- ProvidersHelper.cs
- HtmlPageAdapter.cs
- TdsValueSetter.cs
- DBSchemaRow.cs
- CallbackException.cs
- WindowProviderWrapper.cs
- BitmapPalettes.cs
- WmfPlaceableFileHeader.cs
- SqlUDTStorage.cs
- CommandHelper.cs
- InstanceDataCollection.cs
- ProcessManager.cs
- TableParaClient.cs
- FontDifferentiator.cs
- UInt32Storage.cs
- AspCompat.cs
- PolygonHotSpot.cs
- PermissionToken.cs
- HttpListenerTimeoutManager.cs
- DataRelation.cs
- ObjectDisposedException.cs
- Frame.cs
- CompensatableSequenceActivity.cs
- HttpSocketManager.cs
- Floater.cs
- DesignerVerbToolStripMenuItem.cs
- SystemThemeKey.cs
- PassportAuthenticationEventArgs.cs
- DesignerAttribute.cs
- Codec.cs
- SharedPerformanceCounter.cs
- SequentialUshortCollection.cs
- PreservationFileWriter.cs
- DragDropManager.cs
- ParseChildrenAsPropertiesAttribute.cs
- FacetEnabledSchemaElement.cs
- PermissionListSet.cs
- DispatcherProcessingDisabled.cs
- TypeConverterValueSerializer.cs
- WebPartVerbsEventArgs.cs
- ObjectAssociationEndMapping.cs
- SrgsGrammarCompiler.cs
- PenThreadPool.cs
- RefreshPropertiesAttribute.cs
- SQLBytesStorage.cs
- XPathNavigator.cs
- XMLSchema.cs
- TableRow.cs
- FieldInfo.cs
- LambdaCompiler.Logical.cs
- Int64AnimationUsingKeyFrames.cs
- CacheChildrenQuery.cs
- FontDriver.cs
- Psha1DerivedKeyGenerator.cs
- MimeWriter.cs
- StandardOleMarshalObject.cs
- IdentityHolder.cs
- SqlParameter.cs
- Normalizer.cs
- PropertyConverter.cs
- Semaphore.cs
- WorkflowInstanceContextProvider.cs
- SelectionChangedEventArgs.cs
- AssemblyResourceLoader.cs
- ReachFixedPageSerializer.cs
- StateMachineWorkflowDesigner.cs
- SessionPageStateSection.cs
- PageThemeParser.cs
- IPeerNeighbor.cs
- DataSourceHelper.cs
- FontDialog.cs
- StrongName.cs
- ProcessHostFactoryHelper.cs
- InkPresenterAutomationPeer.cs
- OLEDB_Enum.cs
- CompilationUtil.cs
- FontStretches.cs
- FunctionImportMapping.ReturnTypeRenameMapping.cs
- FileEnumerator.cs
- ImageCodecInfo.cs
- ParsedRoute.cs
- CellQuery.cs
- EntityClassGenerator.cs
- ReachUIElementCollectionSerializer.cs
- AttributeUsageAttribute.cs
- OutputCacheProfile.cs
- XPathSelectionIterator.cs
- TextRange.cs
- RSAProtectedConfigurationProvider.cs
- CallSiteBinder.cs
- SHA1CryptoServiceProvider.cs