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
- ThreadAttributes.cs
- WebEventTraceProvider.cs
- SqlDataSourceCustomCommandPanel.cs
- EastAsianLunisolarCalendar.cs
- MimePart.cs
- ControlDesigner.cs
- XslAst.cs
- PathStreamGeometryContext.cs
- ParallelTimeline.cs
- SizeAnimationUsingKeyFrames.cs
- Keywords.cs
- InvalidDataException.cs
- TransformDescriptor.cs
- EventRecord.cs
- MethodImplAttribute.cs
- DragCompletedEventArgs.cs
- RepeatBehavior.cs
- DataSvcMapFile.cs
- MethodImplAttribute.cs
- RelatedCurrencyManager.cs
- TextDecorationLocationValidation.cs
- Repeater.cs
- StorageRoot.cs
- SafeSystemMetrics.cs
- RepeatInfo.cs
- CompositeActivityMarkupSerializer.cs
- ValidatorCollection.cs
- Point3DAnimationUsingKeyFrames.cs
- RuntimeHandles.cs
- BuildDependencySet.cs
- ApplicationManager.cs
- AbsoluteQuery.cs
- BinaryUtilClasses.cs
- CacheChildrenQuery.cs
- SynchronizedInputAdaptor.cs
- ActiveXHelper.cs
- EntityStoreSchemaFilterEntry.cs
- SiteMap.cs
- XmlSyndicationContent.cs
- SelfIssuedTokenFactoryCredential.cs
- ArgumentNullException.cs
- PlatformNotSupportedException.cs
- VerificationAttribute.cs
- RegexGroupCollection.cs
- XmlNodeReader.cs
- ADMembershipProvider.cs
- FieldNameLookup.cs
- ByteAnimationUsingKeyFrames.cs
- VirtualPathUtility.cs
- ProfileBuildProvider.cs
- EpmContentSerializerBase.cs
- SiteMapHierarchicalDataSourceView.cs
- DbDataSourceEnumerator.cs
- KeyedPriorityQueue.cs
- InputLangChangeEvent.cs
- WsatProxy.cs
- DefaultBinder.cs
- XamlUtilities.cs
- FlowLayoutPanel.cs
- SafeWaitHandle.cs
- ipaddressinformationcollection.cs
- ExpressionBuilderContext.cs
- RemotingConfiguration.cs
- WindowsSidIdentity.cs
- RtfControlWordInfo.cs
- ImageAnimator.cs
- CriticalHandle.cs
- AnnotationHelper.cs
- EdmComplexTypeAttribute.cs
- StrokeNodeEnumerator.cs
- GridViewSelectEventArgs.cs
- DocumentGridPage.cs
- SimpleExpression.cs
- CompilerHelpers.cs
- LocalizableResourceBuilder.cs
- SafeArrayTypeMismatchException.cs
- NameValuePair.cs
- DesignerView.Commands.cs
- MarkupProperty.cs
- PeerNodeTraceRecord.cs
- BitmapImage.cs
- DesignerListAdapter.cs
- MailWebEventProvider.cs
- NamespaceTable.cs
- DeclaredTypeValidatorAttribute.cs
- ArrayWithOffset.cs
- MsmqAuthenticationMode.cs
- LogWriteRestartAreaAsyncResult.cs
- basevalidator.cs
- FilterQuery.cs
- XmlComplianceUtil.cs
- MethodCallTranslator.cs
- Odbc32.cs
- XPathNavigatorReader.cs
- EventLogger.cs
- SmtpFailedRecipientException.cs
- DbProviderServices.cs
- TableCell.cs
- Int16.cs
- XmlSchemaAttributeGroupRef.cs