Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Automation / Peers / GenericRootAutomationPeer.cs / 1305600 / 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
- FixedTextSelectionProcessor.cs
- DataIdProcessor.cs
- PropertyChangeTracker.cs
- RayMeshGeometry3DHitTestResult.cs
- Grid.cs
- AlgoModule.cs
- WhitespaceRule.cs
- MatrixStack.cs
- GreaterThan.cs
- XmlSchemaSimpleTypeUnion.cs
- ContextMenuAutomationPeer.cs
- PerformanceCounterManager.cs
- CategoryNameCollection.cs
- _ConnectOverlappedAsyncResult.cs
- EncryptedType.cs
- SqlDataSourceQueryEditorForm.cs
- XmlDigitalSignatureProcessor.cs
- SqlReferenceCollection.cs
- ListViewVirtualItemsSelectionRangeChangedEvent.cs
- EntityDataSourceSelectingEventArgs.cs
- sqlstateclientmanager.cs
- ResourceManagerWrapper.cs
- ManipulationBoundaryFeedbackEventArgs.cs
- WebPartEditorCancelVerb.cs
- XMLDiffLoader.cs
- DependencyObject.cs
- DataServiceProcessingPipelineEventArgs.cs
- NativeMethods.cs
- PaperSource.cs
- AbsoluteQuery.cs
- NameValueCache.cs
- JsonUriDataContract.cs
- GenericFlowSwitchHelper.cs
- RecordConverter.cs
- FlowLayoutPanel.cs
- FieldBuilder.cs
- PackageProperties.cs
- __ComObject.cs
- SizeLimitedCache.cs
- KeyValueConfigurationCollection.cs
- Missing.cs
- TextDpi.cs
- TCEAdapterGenerator.cs
- CaseStatement.cs
- CompatibleComparer.cs
- GenericEnumConverter.cs
- PreservationFileReader.cs
- DiscoveryDefaults.cs
- PolyBezierSegmentFigureLogic.cs
- PropertyCollection.cs
- HeaderedItemsControl.cs
- SqlNotificationRequest.cs
- Win32.cs
- Predicate.cs
- ArrayItemReference.cs
- DataGridItem.cs
- SpellerError.cs
- DetailsViewUpdatedEventArgs.cs
- Vector.cs
- login.cs
- ACL.cs
- XmlText.cs
- VisualProxy.cs
- ToolStripContentPanel.cs
- iisPickupDirectory.cs
- AnnotationComponentChooser.cs
- WebPartDisplayMode.cs
- Hyperlink.cs
- WebPartConnectionCollection.cs
- ExpandedWrapper.cs
- InheritanceAttribute.cs
- XmlDataProvider.cs
- ConfigurationSectionCollection.cs
- WebBrowserSiteBase.cs
- CheckBoxFlatAdapter.cs
- XpsImageSerializationService.cs
- RenderData.cs
- MinMaxParagraphWidth.cs
- TextOutput.cs
- CompilerGlobalScopeAttribute.cs
- ContentValidator.cs
- SystemIcons.cs
- ProcessHostMapPath.cs
- HandlerWithFactory.cs
- DelegateSerializationHolder.cs
- _SafeNetHandles.cs
- httpstaticobjectscollection.cs
- OverflowException.cs
- DiscoveryServerProtocol.cs
- Activator.cs
- MembershipUser.cs
- FileRecordSequence.cs
- ServiceDescriptionContext.cs
- ApplicationInfo.cs
- Int32Rect.cs
- Emitter.cs
- SqlTypeConverter.cs
- Simplifier.cs
- IsolatedStorageFilePermission.cs
- TransmissionStrategy.cs