Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / MS / Win32 / UxThemeWrapper.cs / 1 / UxThemeWrapper.cs
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Runtime.InteropServices; using System.Security; using System.Windows; using System.Windows.Media; using System.Text; using MS.Win32; using MS.Internal; namespace MS.Win32 { ////// Wrapper class for loading UxTheme system theme data /// internal static class UxThemeWrapper { static UxThemeWrapper() { _isActive = SafeNativeMethods.IsUxThemeActive(); } internal static bool IsActive { get { return _isActive; } } internal static string ThemeName { get { if (IsActive) { if (_themeName == null) { EnsureThemeName(); } return _themeName; } else { return "classic"; } } } internal static string ThemeColor { get { Debug.Assert(IsActive, "Queried ThemeColor while UxTheme is not active."); if (_themeColor == null) { EnsureThemeName(); } return _themeColor; } } ////// Critical - as this code performs an elevation to get current theme name /// TreatAsSafe - the "critical data" is transformed into "safe data" /// all the info stored is the currrent theme name and current color - e.g. "Luna", "NormalColor" /// Does not contain a path - considered safe. /// [SecurityCritical, SecurityTreatAsSafe] private static void EnsureThemeName() { StringBuilder themeName = new StringBuilder(Win32.NativeMethods.MAX_PATH); StringBuilder themeColor = new StringBuilder(Win32.NativeMethods.MAX_PATH); if (UnsafeNativeMethods.GetCurrentThemeName(themeName, themeName.Capacity, themeColor, themeColor.Capacity, null, 0) == 0) { // Success _themeName = themeName.ToString(); _themeName = Path.GetFileNameWithoutExtension(_themeName); _themeColor = themeColor.ToString(); } else { // Failed to retrieve the name _themeName = _themeColor = String.Empty; } } internal static void OnThemeChanged() { _isActive = SafeNativeMethods.IsUxThemeActive(); _themeName = null; _themeColor = null; } private static bool _isActive; private static string _themeName; private static string _themeColor; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Runtime.InteropServices; using System.Security; using System.Windows; using System.Windows.Media; using System.Text; using MS.Win32; using MS.Internal; namespace MS.Win32 { ////// Wrapper class for loading UxTheme system theme data /// internal static class UxThemeWrapper { static UxThemeWrapper() { _isActive = SafeNativeMethods.IsUxThemeActive(); } internal static bool IsActive { get { return _isActive; } } internal static string ThemeName { get { if (IsActive) { if (_themeName == null) { EnsureThemeName(); } return _themeName; } else { return "classic"; } } } internal static string ThemeColor { get { Debug.Assert(IsActive, "Queried ThemeColor while UxTheme is not active."); if (_themeColor == null) { EnsureThemeName(); } return _themeColor; } } ////// Critical - as this code performs an elevation to get current theme name /// TreatAsSafe - the "critical data" is transformed into "safe data" /// all the info stored is the currrent theme name and current color - e.g. "Luna", "NormalColor" /// Does not contain a path - considered safe. /// [SecurityCritical, SecurityTreatAsSafe] private static void EnsureThemeName() { StringBuilder themeName = new StringBuilder(Win32.NativeMethods.MAX_PATH); StringBuilder themeColor = new StringBuilder(Win32.NativeMethods.MAX_PATH); if (UnsafeNativeMethods.GetCurrentThemeName(themeName, themeName.Capacity, themeColor, themeColor.Capacity, null, 0) == 0) { // Success _themeName = themeName.ToString(); _themeName = Path.GetFileNameWithoutExtension(_themeName); _themeColor = themeColor.ToString(); } else { // Failed to retrieve the name _themeName = _themeColor = String.Empty; } } internal static void OnThemeChanged() { _isActive = SafeNativeMethods.IsUxThemeActive(); _themeName = null; _themeColor = null; } private static bool _isActive; private static string _themeName; private static string _themeColor; } } // 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
- counter.cs
- ClientRoleProvider.cs
- SystemInformation.cs
- WindowsIdentity.cs
- MessageProperties.cs
- WindowsFormsHostAutomationPeer.cs
- ButtonBaseAutomationPeer.cs
- ListViewTableRow.cs
- SqlDataSourceView.cs
- WindowCollection.cs
- SQLInt32Storage.cs
- TrackingLocationCollection.cs
- RecognizerInfo.cs
- WebFormDesignerActionService.cs
- TransformGroup.cs
- DebugInfoExpression.cs
- ObfuscationAttribute.cs
- _HeaderInfo.cs
- StateMachineExecutionState.cs
- SqlDependencyListener.cs
- Buffer.cs
- XmlComment.cs
- BitVector32.cs
- CollectionChangeEventArgs.cs
- HtmlSelect.cs
- CompositeCollectionView.cs
- PathFigure.cs
- ApplicationException.cs
- QueryResponse.cs
- FormViewPagerRow.cs
- ScriptReferenceBase.cs
- DocumentGridContextMenu.cs
- NameSpaceExtractor.cs
- MarkedHighlightComponent.cs
- TemplateControl.cs
- UserInitiatedNavigationPermission.cs
- XmlSchemaValidationException.cs
- PasswordPropertyTextAttribute.cs
- Control.cs
- DictionarySurrogate.cs
- TextParaClient.cs
- ITreeGenerator.cs
- TdsParameterSetter.cs
- UnionExpr.cs
- OptimizerPatterns.cs
- WindowsIdentity.cs
- FormattedTextSymbols.cs
- ComplexObject.cs
- PcmConverter.cs
- Brushes.cs
- OracleParameter.cs
- MimeXmlImporter.cs
- FtpCachePolicyElement.cs
- CodeExpressionCollection.cs
- XPathDocumentNavigator.cs
- CodeDOMUtility.cs
- XPathNode.cs
- BrowserInteropHelper.cs
- LayoutDump.cs
- ElementUtil.cs
- WizardStepBase.cs
- XmlSchemaComplexContent.cs
- Annotation.cs
- Viewport2DVisual3D.cs
- RevocationPoint.cs
- TextFindEngine.cs
- BrushValueSerializer.cs
- ForEachAction.cs
- AccessText.cs
- Path.cs
- AbstractExpressions.cs
- DropShadowBitmapEffect.cs
- NativeMethods.cs
- XmlDataSourceView.cs
- DetailsViewAutoFormat.cs
- BitmapFrameEncode.cs
- CollectionConverter.cs
- TemplateControlBuildProvider.cs
- SafeRegistryHandle.cs
- DefaultValueTypeConverter.cs
- SecurityBindingElement.cs
- ProgressBarBrushConverter.cs
- SoapException.cs
- HotSpotCollection.cs
- FontCollection.cs
- WorkflowNamespace.cs
- XmlHierarchicalDataSourceView.cs
- BinaryCommonClasses.cs
- AppDomainUnloadedException.cs
- DataGridViewRowCollection.cs
- Matrix3D.cs
- SettingsBindableAttribute.cs
- GacUtil.cs
- HwndSourceKeyboardInputSite.cs
- DataGridViewCellStyle.cs
- Animatable.cs
- StringConcat.cs
- WebServiceResponseDesigner.cs
- User.cs
- SerTrace.cs