Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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.
Link Menu
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MultiBinding.cs
- RuntimeConfigurationRecord.cs
- RightsManagementPermission.cs
- DataGridViewCellEventArgs.cs
- WebDescriptionAttribute.cs
- ModifierKeysConverter.cs
- WebServiceEnumData.cs
- _NativeSSPI.cs
- RowToFieldTransformer.cs
- Point4D.cs
- HelpProvider.cs
- HtmlEncodedRawTextWriter.cs
- Int32Animation.cs
- TraceLog.cs
- ObjectAnimationUsingKeyFrames.cs
- SelectionItemPattern.cs
- TextWriterEngine.cs
- AddIn.cs
- ImageInfo.cs
- InputReport.cs
- FileIOPermission.cs
- CaseInsensitiveComparer.cs
- ConfigurationProperty.cs
- NotCondition.cs
- DataMemberListEditor.cs
- DesignerAttribute.cs
- DataSourceHelper.cs
- MailMessage.cs
- XmlLanguage.cs
- CrossSiteScriptingValidation.cs
- TemplateXamlTreeBuilder.cs
- PolicyManager.cs
- AppDomainShutdownMonitor.cs
- ImageInfo.cs
- ValidationErrorInfo.cs
- XmlSchemaAttributeGroup.cs
- XmlCustomFormatter.cs
- ProgressPage.cs
- ProgramPublisher.cs
- DiscoveryClientDocuments.cs
- OracleRowUpdatedEventArgs.cs
- GorillaCodec.cs
- XPathException.cs
- XmlNavigatorFilter.cs
- ZeroOpNode.cs
- DataGridViewControlCollection.cs
- DataGridTextBox.cs
- TableStyle.cs
- WebPartCatalogCloseVerb.cs
- PositiveTimeSpanValidator.cs
- Manipulation.cs
- Translator.cs
- LiteralTextContainerControlBuilder.cs
- BypassElement.cs
- UniqueSet.cs
- JournalEntry.cs
- FunctionImportElement.cs
- SocketInformation.cs
- BitmapMetadataEnumerator.cs
- ExpressionBindingCollection.cs
- ServiceKnownTypeAttribute.cs
- SplitterEvent.cs
- Grid.cs
- RuntimeConfig.cs
- FormatConvertedBitmap.cs
- XPathNodeIterator.cs
- DBNull.cs
- SourceSwitch.cs
- StoreItemCollection.Loader.cs
- DefaultAuthorizationContext.cs
- SafeNativeMethods.cs
- PrimaryKeyTypeConverter.cs
- NavigationService.cs
- XmlHierarchyData.cs
- XmlSchemaDatatype.cs
- ContainerFilterService.cs
- Baml6Assembly.cs
- CellTreeNode.cs
- DetailsViewRow.cs
- httpapplicationstate.cs
- LocalizableAttribute.cs
- SerializationSectionGroup.cs
- DataGridLinkButton.cs
- DesignerView.Commands.cs
- Point3DCollection.cs
- WorkflowViewService.cs
- DataSourceControl.cs
- Pkcs9Attribute.cs
- KeyTime.cs
- DifferencingCollection.cs
- OrCondition.cs
- InternalMappingException.cs
- XmlNodeChangedEventManager.cs
- GridEntry.cs
- SqlStream.cs
- HostingPreferredMapPath.cs
- CommandField.cs
- HwndSourceParameters.cs
- WebPartConnectionsConnectVerb.cs
- TypographyProperties.cs