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
- SchemaNotation.cs
- PrintPreviewDialog.cs
- TemplateXamlTreeBuilder.cs
- BaseWebProxyFinder.cs
- WebEventTraceProvider.cs
- TransformerInfo.cs
- Matrix.cs
- ValidationHelper.cs
- TableItemStyle.cs
- DynamicDiscoSearcher.cs
- RadioButtonFlatAdapter.cs
- HeaderedContentControl.cs
- ResponseStream.cs
- ThreadLocal.cs
- SharedStatics.cs
- SendMailErrorEventArgs.cs
- TreeNodeMouseHoverEvent.cs
- WebConfigurationHost.cs
- XmlSchemaSimpleTypeRestriction.cs
- XmlComment.cs
- StylusPointCollection.cs
- QilStrConcat.cs
- XmlSchemaSimpleType.cs
- QueuePropertyVariants.cs
- InternalConfigSettingsFactory.cs
- StreamingContext.cs
- _AutoWebProxyScriptHelper.cs
- TableLayoutCellPaintEventArgs.cs
- TextSyndicationContent.cs
- StretchValidation.cs
- DesignerVerbToolStripMenuItem.cs
- ColumnCollectionEditor.cs
- TextServicesPropertyRanges.cs
- HTMLTextWriter.cs
- ClientEventManager.cs
- ItemChangedEventArgs.cs
- RegexWriter.cs
- BuilderPropertyEntry.cs
- HScrollBar.cs
- QueryableDataSource.cs
- RegexRunnerFactory.cs
- RowSpanVector.cs
- DefaultCommandConverter.cs
- RowBinding.cs
- ScriptHandlerFactory.cs
- CategoriesDocument.cs
- SafeEventLogWriteHandle.cs
- mansign.cs
- RootProfilePropertySettingsCollection.cs
- Token.cs
- CodeAttributeDeclaration.cs
- TransactionTable.cs
- RtfControlWordInfo.cs
- ActivationArguments.cs
- DataObjectMethodAttribute.cs
- COM2IDispatchConverter.cs
- BitmapEffectGroup.cs
- ScrollPattern.cs
- DecoderReplacementFallback.cs
- XmlCharacterData.cs
- OneOf.cs
- SystemNetworkInterface.cs
- WebScriptServiceHost.cs
- FillErrorEventArgs.cs
- StorageMappingItemLoader.cs
- SubclassTypeValidatorAttribute.cs
- TransactionManager.cs
- ISCIIEncoding.cs
- RowType.cs
- HtmlWindow.cs
- SendSecurityHeader.cs
- ClientCultureInfo.cs
- CallbackValidatorAttribute.cs
- UInt32Storage.cs
- AddressHeader.cs
- ArrayConverter.cs
- ApplyImportsAction.cs
- XmlSchemaChoice.cs
- EventPrivateKey.cs
- SafeCryptContextHandle.cs
- ContextDataSource.cs
- Int16Converter.cs
- DependencyObjectProvider.cs
- UTF32Encoding.cs
- TimeZoneNotFoundException.cs
- MimeReturn.cs
- InfoCardRSAPKCS1KeyExchangeFormatter.cs
- XpsSerializerWriter.cs
- InternalConfigHost.cs
- SafeNativeMethods.cs
- BinaryObjectReader.cs
- ConversionHelper.cs
- PointLightBase.cs
- HebrewNumber.cs
- ToolZone.cs
- ItemsControl.cs
- TracedNativeMethods.cs
- FilteredAttributeCollection.cs
- HttpRuntime.cs
- MissingSatelliteAssemblyException.cs