Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DefaultValueConverter.cs
- oledbmetadatacollectionnames.cs
- NamedPermissionSet.cs
- SystemIcmpV4Statistics.cs
- VariableAction.cs
- WebPartCloseVerb.cs
- ScanQueryOperator.cs
- OutOfMemoryException.cs
- HttpException.cs
- TimeSpanStorage.cs
- PageOutputQuality.cs
- SHA1.cs
- ZipIOBlockManager.cs
- SymLanguageType.cs
- StaticTextPointer.cs
- WebException.cs
- AssemblyBuilder.cs
- SurrogateSelector.cs
- XPathSelfQuery.cs
- Rotation3DKeyFrameCollection.cs
- SettingsPropertyCollection.cs
- CatalogZone.cs
- InvalidPrinterException.cs
- UnsafeNativeMethods.cs
- DetailsViewPagerRow.cs
- IntegerValidator.cs
- IndependentAnimationStorage.cs
- BaseServiceProvider.cs
- ParallelEnumerableWrapper.cs
- CodeExporter.cs
- DataTableClearEvent.cs
- FontDriver.cs
- AppDomainCompilerProxy.cs
- LazyInitializer.cs
- ProfileBuildProvider.cs
- ViewValidator.cs
- EntityException.cs
- listitem.cs
- TextTabProperties.cs
- ItemDragEvent.cs
- SystemIPInterfaceProperties.cs
- DirectoryInfo.cs
- RIPEMD160.cs
- Camera.cs
- TextAutomationPeer.cs
- DiscoveryClient.cs
- EntityWrapperFactory.cs
- ClientType.cs
- SchemaNames.cs
- TextTreeTextBlock.cs
- CriticalExceptions.cs
- ExternalFile.cs
- ToggleButtonAutomationPeer.cs
- InvocationExpression.cs
- HtmlInputRadioButton.cs
- ExpressionConverter.cs
- DbConvert.cs
- SymbolDocumentInfo.cs
- ComponentEvent.cs
- DrawingImage.cs
- ResourceManagerWrapper.cs
- SqlDataSourceStatusEventArgs.cs
- ToolStripItemClickedEventArgs.cs
- RelativeSource.cs
- DialogResultConverter.cs
- ListenerSingletonConnectionReader.cs
- VirtualPathProvider.cs
- EncodingNLS.cs
- QilIterator.cs
- ClientApiGenerator.cs
- XslTransformFileEditor.cs
- ToolStripDropDownClosedEventArgs.cs
- WindowsImpersonationContext.cs
- ValueConversionAttribute.cs
- StateMachineExecutionState.cs
- TextParagraphProperties.cs
- NamedPermissionSet.cs
- WebPart.cs
- ServiceRouteHandler.cs
- DataGridRow.cs
- DataGridRow.cs
- ScaleTransform.cs
- SmiXetterAccessMap.cs
- OleDbTransaction.cs
- RegexNode.cs
- EventTask.cs
- PopupRoot.cs
- FrameworkElementFactoryMarkupObject.cs
- SimpleFieldTemplateFactory.cs
- WhileDesigner.cs
- ObjectDataSourceFilteringEventArgs.cs
- DataBinder.cs
- FrameworkElementFactoryMarkupObject.cs
- Dynamic.cs
- BitmapEffectState.cs
- FixedSchema.cs
- Thickness.cs
- ResolveCriteriaApril2005.cs
- GeneralTransform3DGroup.cs
- EntityDataSourceQueryBuilder.cs