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
- BindingGroup.cs
- ApplicationId.cs
- StringExpressionSet.cs
- ExpressionBindingCollection.cs
- OdbcConnectionStringbuilder.cs
- WebPartActionVerb.cs
- PageThemeBuildProvider.cs
- UIHelper.cs
- GACIdentityPermission.cs
- LinkClickEvent.cs
- FormClosedEvent.cs
- XmlComplianceUtil.cs
- SqlDuplicator.cs
- LowerCaseStringConverter.cs
- DataGridViewTopRowAccessibleObject.cs
- BaseValidator.cs
- GroupBoxAutomationPeer.cs
- WriteableOnDemandPackagePart.cs
- SafeSecurityHandles.cs
- HtmlInputReset.cs
- FileReader.cs
- ModuleElement.cs
- ContentControl.cs
- _ListenerRequestStream.cs
- DiscoveryDocumentSearchPattern.cs
- SqlDataAdapter.cs
- ListItemConverter.cs
- ExpandCollapsePatternIdentifiers.cs
- SemaphoreSecurity.cs
- DataGridViewCellStyleChangedEventArgs.cs
- ConfigurationHandlersInstallComponent.cs
- HttpVersion.cs
- FontConverter.cs
- COM2ComponentEditor.cs
- ChannelManager.cs
- PackageRelationship.cs
- HotSpotCollectionEditor.cs
- LineGeometry.cs
- NodeCounter.cs
- BaseParser.cs
- XPathParser.cs
- Base64Decoder.cs
- ControlBuilderAttribute.cs
- CallbackWrapper.cs
- ConnectionProviderAttribute.cs
- MappedMetaModel.cs
- Image.cs
- EndpointInstanceProvider.cs
- _SingleItemRequestCache.cs
- TextBounds.cs
- SymbolTable.cs
- CopyOfAction.cs
- StorageEntitySetMapping.cs
- SubclassTypeValidatorAttribute.cs
- LinqDataSourceStatusEventArgs.cs
- OciEnlistContext.cs
- EntityViewGenerationAttribute.cs
- XmlSchemaAttributeGroup.cs
- PostBackTrigger.cs
- RowToParametersTransformer.cs
- CheckBoxList.cs
- SiteIdentityPermission.cs
- PropertyDescriptorGridEntry.cs
- HtmlInputButton.cs
- AsymmetricKeyExchangeFormatter.cs
- LayoutExceptionEventArgs.cs
- ClientSettings.cs
- RegexFCD.cs
- SubMenuStyle.cs
- JpegBitmapEncoder.cs
- PropertyGridEditorPart.cs
- ServiceEndpointAssociationProvider.cs
- SafeArchiveContext.cs
- CodeStatement.cs
- AdCreatedEventArgs.cs
- ResXResourceWriter.cs
- RulePatternOps.cs
- Table.cs
- PrintingPermissionAttribute.cs
- EditingMode.cs
- DrawingAttributes.cs
- RequestCachePolicy.cs
- ErrorActivity.cs
- SendingRequestEventArgs.cs
- TreeViewAutomationPeer.cs
- DataSpaceManager.cs
- Point3D.cs
- MetadataFile.cs
- DataControlField.cs
- BufferedGraphicsContext.cs
- UInt16Storage.cs
- XmlNamedNodeMap.cs
- RectAnimation.cs
- TypedTableBaseExtensions.cs
- Component.cs
- WindowsFont.cs
- EdmTypeAttribute.cs
- DatagridviewDisplayedBandsData.cs
- DbConnectionPoolIdentity.cs
- UpdateProgress.cs