Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- TimeSpan.cs
- ListBoxItem.cs
- Int32AnimationUsingKeyFrames.cs
- TabControl.cs
- DropDownList.cs
- DataGridViewSelectedRowCollection.cs
- UnknownBitmapEncoder.cs
- MessagePartSpecification.cs
- ButtonFieldBase.cs
- _HeaderInfoTable.cs
- ReadOnlyObservableCollection.cs
- RegexGroup.cs
- OneToOneMappingSerializer.cs
- WebBrowser.cs
- TransactionTraceIdentifier.cs
- StyleModeStack.cs
- Options.cs
- SystemIPGlobalStatistics.cs
- CompilerCollection.cs
- TreeViewImageIndexConverter.cs
- PackageRelationshipSelector.cs
- SecuritySessionFilter.cs
- TypeToken.cs
- XPathDocumentIterator.cs
- HttpWebRequest.cs
- DataReceivedEventArgs.cs
- ValueQuery.cs
- CodeAttachEventStatement.cs
- KnownTypesHelper.cs
- RequestQueue.cs
- LinearGradientBrush.cs
- XmlSchemaSimpleTypeList.cs
- COSERVERINFO.cs
- BaseTemplateCodeDomTreeGenerator.cs
- DataGridState.cs
- RuntimeDelegateArgument.cs
- UxThemeWrapper.cs
- DbMetaDataColumnNames.cs
- BaseTemplateBuildProvider.cs
- StylusPointPropertyInfoDefaults.cs
- SafeProcessHandle.cs
- Listener.cs
- XmlStringTable.cs
- EventProxy.cs
- ClientSettingsSection.cs
- MenuTracker.cs
- PenCursorManager.cs
- HttpCookieCollection.cs
- hwndwrapper.cs
- ListBindableAttribute.cs
- TextTreePropertyUndoUnit.cs
- SqlUtil.cs
- SmuggledIUnknown.cs
- CommentEmitter.cs
- TypeBinaryExpression.cs
- AsyncResult.cs
- DesignTimeVisibleAttribute.cs
- ColorInterpolationModeValidation.cs
- TileBrush.cs
- ProfileParameter.cs
- ApplicationCommands.cs
- DecimalAnimationBase.cs
- ElementUtil.cs
- CqlErrorHelper.cs
- ParsedAttributeCollection.cs
- DefaultHttpHandler.cs
- Zone.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- IPAddressCollection.cs
- AttachedAnnotationChangedEventArgs.cs
- TextContainerChangedEventArgs.cs
- MetaTableHelper.cs
- EventItfInfo.cs
- SqlCaseSimplifier.cs
- DefaultTextStore.cs
- VisualStyleTypesAndProperties.cs
- WindowsTooltip.cs
- FixedSOMImage.cs
- ClientSettingsSection.cs
- NonParentingControl.cs
- InstanceData.cs
- FreezableCollection.cs
- RtfToXamlReader.cs
- CheckBox.cs
- EditorPartCollection.cs
- ModelItemDictionary.cs
- Pair.cs
- ToolStripButton.cs
- DataServiceContext.cs
- AggregateNode.cs
- DescendantOverDescendantQuery.cs
- AutomationElement.cs
- CharEnumerator.cs
- HttpAsyncResult.cs
- BaseTemplateParser.cs
- SimpleTextLine.cs
- externdll.cs
- ConsumerConnectionPointCollection.cs
- ThemeDirectoryCompiler.cs
- EDesignUtil.cs