Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Win32 / UxThemeWrapper.cs / 1305600 / 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
- SettingsAttributeDictionary.cs
- safex509handles.cs
- TypedElement.cs
- EntitySetBaseCollection.cs
- ControlUtil.cs
- ListItemConverter.cs
- WebPartEditorCancelVerb.cs
- ListBindingConverter.cs
- TableCellCollection.cs
- BulletedListEventArgs.cs
- ColorMatrix.cs
- TimeoutValidationAttribute.cs
- ResourceFallbackManager.cs
- DataGridViewAdvancedBorderStyle.cs
- NonValidatingSecurityTokenAuthenticator.cs
- FileDialog.cs
- ImageBrush.cs
- CaretElement.cs
- CodeSnippetExpression.cs
- CompoundFileStreamReference.cs
- SqlNode.cs
- SafeNativeMethods.cs
- OciLobLocator.cs
- StringCollectionMarkupSerializer.cs
- SecurityAppliedMessage.cs
- XmlSerializerOperationBehavior.cs
- ObjectNavigationPropertyMapping.cs
- XmlSchemaSimpleType.cs
- CodeStatementCollection.cs
- CallContext.cs
- AttachmentCollection.cs
- TrackingProfileCache.cs
- CustomCategoryAttribute.cs
- CheckedListBox.cs
- SiteMembershipCondition.cs
- AutoGeneratedFieldProperties.cs
- SamlAttribute.cs
- StreamAsIStream.cs
- XmlSchemaExporter.cs
- AdRotator.cs
- CopyNamespacesAction.cs
- SemanticKeyElement.cs
- ProcessInputEventArgs.cs
- Expression.DebuggerProxy.cs
- GroupStyle.cs
- DynamicUpdateCommand.cs
- BooleanAnimationBase.cs
- HttpCachePolicy.cs
- DecimalConstantAttribute.cs
- DataKeyCollection.cs
- ProtocolsConfiguration.cs
- ItemsChangedEventArgs.cs
- RelationshipEntry.cs
- XmlObjectSerializer.cs
- CqlBlock.cs
- ThreadExceptionEvent.cs
- SafeNativeMethodsCLR.cs
- ChannelManagerHelpers.cs
- RoutedEventHandlerInfo.cs
- XpsSerializationException.cs
- ConsumerConnectionPoint.cs
- hebrewshape.cs
- Type.cs
- DataGridViewSortCompareEventArgs.cs
- ColumnTypeConverter.cs
- KeyInterop.cs
- SignatureDescription.cs
- LinqDataSourceView.cs
- StreamedWorkflowDefinitionContext.cs
- SqlClientWrapperSmiStreamChars.cs
- AutomationTextAttribute.cs
- FileSystemInfo.cs
- DropShadowEffect.cs
- WorkflowServiceHostFactory.cs
- RegisteredHiddenField.cs
- TabletDeviceInfo.cs
- TiffBitmapDecoder.cs
- EdmScalarPropertyAttribute.cs
- ThreadSafeList.cs
- FileAuthorizationModule.cs
- EmbeddedObject.cs
- DesignerInterfaces.cs
- SystemFonts.cs
- MonthCalendarDesigner.cs
- TraceFilter.cs
- WebControl.cs
- StringStorage.cs
- Rotation3DAnimationBase.cs
- StreamDocument.cs
- CssTextWriter.cs
- MemberInfoSerializationHolder.cs
- BaseValidator.cs
- xml.cs
- ViewStateModeByIdAttribute.cs
- RoutedCommand.cs
- CompilationSection.cs
- DashStyles.cs
- Fx.cs
- DataGridViewDataConnection.cs
- SmiTypedGetterSetter.cs