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
- SystemKeyConverter.cs
- DbConnectionPoolGroup.cs
- TextFormatter.cs
- DataControlButton.cs
- SignalGate.cs
- DataKeyCollection.cs
- ConfigurationSettings.cs
- RootBuilder.cs
- ErrorHandler.cs
- DataView.cs
- DataGridAddNewRow.cs
- VBIdentifierDesigner.xaml.cs
- BitmapSourceSafeMILHandle.cs
- ReadOnlyMetadataCollection.cs
- TextSchema.cs
- XmlSchemaImporter.cs
- ChineseLunisolarCalendar.cs
- ListItemCollection.cs
- QueryException.cs
- GenericTextProperties.cs
- BrowserCapabilitiesFactoryBase.cs
- PagesSection.cs
- MemberPathMap.cs
- ScriptReference.cs
- ThemeDirectoryCompiler.cs
- CorePropertiesFilter.cs
- HtmlAnchor.cs
- Utilities.cs
- PageTheme.cs
- OlePropertyStructs.cs
- DPTypeDescriptorContext.cs
- GenericUriParser.cs
- Padding.cs
- XslException.cs
- DesignerSerializerAttribute.cs
- DrawItemEvent.cs
- EntityTemplateFactory.cs
- DerivedKeySecurityTokenStub.cs
- DeclaredTypeElement.cs
- ObjectDataSourceStatusEventArgs.cs
- XmlReflectionImporter.cs
- CodeGenerator.cs
- TemplateBindingExpressionConverter.cs
- ClientData.cs
- BackEase.cs
- AsyncOperation.cs
- TableStyle.cs
- TemporaryBitmapFile.cs
- OdbcConnectionPoolProviderInfo.cs
- AssociationTypeEmitter.cs
- CrossAppDomainChannel.cs
- XmlWrappingWriter.cs
- EpmAttributeNameBuilder.cs
- _NtlmClient.cs
- x509store.cs
- ConditionalAttribute.cs
- InvokeBinder.cs
- ResolveDuplex11AsyncResult.cs
- CryptoHandle.cs
- DataGridViewCellStateChangedEventArgs.cs
- Listbox.cs
- NetCodeGroup.cs
- JsonFormatWriterGenerator.cs
- RuntimeArgument.cs
- ColumnHeaderConverter.cs
- HtmlUtf8RawTextWriter.cs
- Events.cs
- MiniMapControl.xaml.cs
- WebPartManager.cs
- GridItemPattern.cs
- RadialGradientBrush.cs
- Catch.cs
- DPAPIProtectedConfigurationProvider.cs
- DebugView.cs
- SiteMapProvider.cs
- versioninfo.cs
- DisplayMemberTemplateSelector.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- EnumValAlphaComparer.cs
- _ListenerAsyncResult.cs
- TextOptionsInternal.cs
- ByteArrayHelperWithString.cs
- AssemblyCache.cs
- Rotation3DAnimationUsingKeyFrames.cs
- CodeDOMProvider.cs
- RedirectionProxy.cs
- MarshalByRefObject.cs
- AuthorizationSection.cs
- MergeLocalizationDirectives.cs
- AlignmentYValidation.cs
- DPCustomTypeDescriptor.cs
- WmlImageAdapter.cs
- RuleSettings.cs
- AdapterDictionary.cs
- SqlParameterizer.cs
- WebPageTraceListener.cs
- CodeTypeDelegate.cs
- SafeNativeMethods.cs
- SelectionUIHandler.cs
- DocumentPageView.cs