Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- Item.cs
- WebResourceUtil.cs
- AvtEvent.cs
- SqlBuilder.cs
- _RequestCacheProtocol.cs
- PocoPropertyAccessorStrategy.cs
- TextServicesLoader.cs
- ListSourceHelper.cs
- TakeOrSkipWhileQueryOperator.cs
- WindowsSpinner.cs
- DesignerView.cs
- nulltextnavigator.cs
- HttpApplication.cs
- HandlerBase.cs
- TextOnlyOutput.cs
- ServiceReflector.cs
- AliasGenerator.cs
- StorageRoot.cs
- BuildProvider.cs
- XPathNodePointer.cs
- DefaultValueAttribute.cs
- ServerTooBusyException.cs
- FormsIdentity.cs
- EngineSite.cs
- MimeMapping.cs
- Section.cs
- DashStyle.cs
- Rect.cs
- WhitespaceRuleLookup.cs
- ImageAnimator.cs
- OutputCacheProfileCollection.cs
- DefinitionBase.cs
- NativeMethodsOther.cs
- OptimisticConcurrencyException.cs
- DateTimePicker.cs
- DiscardableAttribute.cs
- DesignerActionItem.cs
- PolicyStatement.cs
- WebPartExportVerb.cs
- Line.cs
- FontWeight.cs
- Memoizer.cs
- NonParentingControl.cs
- AppliedDeviceFiltersDialog.cs
- HostVisual.cs
- DataGridLinkButton.cs
- BaseCodeDomTreeGenerator.cs
- TextChangedEventArgs.cs
- ImageMapEventArgs.cs
- OrCondition.cs
- FrameworkElement.cs
- InvalidFilterCriteriaException.cs
- Journaling.cs
- HttpGetClientProtocol.cs
- DependencyPropertyKind.cs
- FontUnitConverter.cs
- RegisteredExpandoAttribute.cs
- UnsettableComboBox.cs
- PropertyItemInternal.cs
- ExcludePathInfo.cs
- PropertyRecord.cs
- XmlReflectionImporter.cs
- PenThread.cs
- XmlSchemaSubstitutionGroup.cs
- XmlSchemaAnnotated.cs
- BitFlagsGenerator.cs
- IdnElement.cs
- UniqueEventHelper.cs
- SiteMapSection.cs
- XPathCompileException.cs
- BuildResultCache.cs
- TrackingWorkflowEventArgs.cs
- SelectionListComponentEditor.cs
- EventSetterHandlerConverter.cs
- Tokenizer.cs
- mongolianshape.cs
- Int32Storage.cs
- MenuItemStyleCollection.cs
- CssClassPropertyAttribute.cs
- RecordsAffectedEventArgs.cs
- ObjectItemCollectionAssemblyCacheEntry.cs
- ListSourceHelper.cs
- CodeChecksumPragma.cs
- WebRequest.cs
- XXXInfos.cs
- ReflectionTypeLoadException.cs
- DataColumnMappingCollection.cs
- GiveFeedbackEventArgs.cs
- SiteMapNode.cs
- RecommendedAsConfigurableAttribute.cs
- WebServiceEndpoint.cs
- TransactionState.cs
- BookmarkEventArgs.cs
- CodeCommentStatementCollection.cs
- FilteredDataSetHelper.cs
- AuthorizationSection.cs
- Span.cs
- StringSource.cs
- WindowsScrollBarBits.cs
- PaintEvent.cs