Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- InternalDispatchObject.cs
- PropertyStore.cs
- CodeSnippetExpression.cs
- FixedStringLookup.cs
- StringFreezingAttribute.cs
- PropertyEntry.cs
- SystemThemeKey.cs
- StructuredTypeEmitter.cs
- ItemType.cs
- SqlResolver.cs
- SoapMessage.cs
- PartitionResolver.cs
- HttpConfigurationSystem.cs
- PKCS1MaskGenerationMethod.cs
- EventManager.cs
- Matrix3DStack.cs
- XpsS0ValidatingLoader.cs
- VisualBrush.cs
- Win32PrintDialog.cs
- SqlTriggerContext.cs
- COM2PictureConverter.cs
- XmlSchemaAnnotated.cs
- Timeline.cs
- XmlMessageFormatter.cs
- XmlEncoding.cs
- PagerStyle.cs
- XmlSchemaExternal.cs
- XmlSignificantWhitespace.cs
- DocumentPage.cs
- WizardForm.cs
- WebPartActionVerb.cs
- Int16Storage.cs
- GridViewItemAutomationPeer.cs
- UnsafeNativeMethods.cs
- Base64Stream.cs
- ProviderManager.cs
- MessageQueuePermissionEntryCollection.cs
- HttpCacheVary.cs
- SimpleParser.cs
- TempFiles.cs
- SubMenuStyleCollection.cs
- webeventbuffer.cs
- recordstatefactory.cs
- ClientSettingsStore.cs
- BindingManagerDataErrorEventArgs.cs
- RoutedEvent.cs
- StateMachineWorkflowInstance.cs
- StorageInfo.cs
- PenContexts.cs
- ReadOnlyDictionary.cs
- LinqExpressionNormalizer.cs
- TableCell.cs
- PrintPreviewControl.cs
- DocumentXmlWriter.cs
- XmlDataImplementation.cs
- AttributeAction.cs
- CookieParameter.cs
- PointAnimationUsingKeyFrames.cs
- ArgumentFixer.cs
- SQLBytes.cs
- CollectionView.cs
- VirtualPathUtility.cs
- WindowsListViewGroupSubsetLink.cs
- ListItemDetailViewAttribute.cs
- DataSourceSelectArguments.cs
- SocketElement.cs
- oledbmetadatacollectionnames.cs
- RecognitionEventArgs.cs
- FormClosedEvent.cs
- IndexerNameAttribute.cs
- EncodingNLS.cs
- COM2ComponentEditor.cs
- ContravarianceAdapter.cs
- _BufferOffsetSize.cs
- Action.cs
- XmlSchemas.cs
- PixelFormat.cs
- SSmlParser.cs
- CacheManager.cs
- InlineCollection.cs
- EntitySetBaseCollection.cs
- RegisteredArrayDeclaration.cs
- WindowsScrollBarBits.cs
- ContainerFilterService.cs
- IriParsingElement.cs
- ClientTargetSection.cs
- DefaultHttpHandler.cs
- BindableTemplateBuilder.cs
- DefaultHttpHandler.cs
- TaiwanLunisolarCalendar.cs
- StringConverter.cs
- RoleService.cs
- HttpCacheVaryByContentEncodings.cs
- Point.cs
- UnSafeCharBuffer.cs
- DbSetClause.cs
- ReversePositionQuery.cs
- _AutoWebProxyScriptEngine.cs
- TextCompositionEventArgs.cs
- XmlCharType.cs