Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- SafeFileMappingHandle.cs
- RawStylusActions.cs
- VScrollBar.cs
- AddInBase.cs
- PropertyManager.cs
- FixedDSBuilder.cs
- KernelTypeValidation.cs
- StringConverter.cs
- SubMenuStyleCollection.cs
- MultiBindingExpression.cs
- FontEmbeddingManager.cs
- QuaternionRotation3D.cs
- DataGridViewCellCollection.cs
- DataServiceRequestOfT.cs
- StyleTypedPropertyAttribute.cs
- ResourceReader.cs
- TimeoutException.cs
- KeyConstraint.cs
- SymDocumentType.cs
- LoginCancelEventArgs.cs
- NotificationContext.cs
- GroupItem.cs
- PassportAuthenticationModule.cs
- ListViewInsertionMark.cs
- TimelineCollection.cs
- ButtonAutomationPeer.cs
- BamlLocalizabilityResolver.cs
- EdmValidator.cs
- CompositeActivityTypeDescriptor.cs
- CollectionBase.cs
- ExpressionPrinter.cs
- PageAsyncTask.cs
- SchemaConstraints.cs
- CompositeActivityTypeDescriptor.cs
- RawUIStateInputReport.cs
- WithStatement.cs
- DescriptionAttribute.cs
- RadioButtonPopupAdapter.cs
- Context.cs
- HttpCapabilitiesEvaluator.cs
- DisplayMemberTemplateSelector.cs
- IndexedEnumerable.cs
- PackWebRequestFactory.cs
- XmlToDatasetMap.cs
- StrongBox.cs
- TextComposition.cs
- EntryPointNotFoundException.cs
- DataGrid.cs
- PropertyManager.cs
- QueryCacheEntry.cs
- SiteMapDataSourceDesigner.cs
- ETagAttribute.cs
- NameValueCollection.cs
- CompressedStack.cs
- PolicyChain.cs
- PasswordTextContainer.cs
- XmlSchemaImporter.cs
- MatrixAnimationUsingKeyFrames.cs
- WindowsGraphicsCacheManager.cs
- ChameleonKey.cs
- ConnectionProviderAttribute.cs
- SQLByte.cs
- AttachedAnnotation.cs
- GB18030Encoding.cs
- CodeChecksumPragma.cs
- ExceptionHelpers.cs
- OptionUsage.cs
- CharConverter.cs
- PreservationFileWriter.cs
- XslAstAnalyzer.cs
- HttpPostedFile.cs
- SoapMessage.cs
- ObjectAnimationBase.cs
- ErrorHandlerModule.cs
- DbProviderServices.cs
- MSG.cs
- Imaging.cs
- OdbcDataReader.cs
- ListViewEditEventArgs.cs
- RowToFieldTransformer.cs
- ObjectListField.cs
- PropertyManager.cs
- MimeMultiPart.cs
- ScriptComponentDescriptor.cs
- SqlConnection.cs
- XmlDocumentType.cs
- WorkflowInstanceContextProvider.cs
- ActivationArguments.cs
- XmlObjectSerializerReadContext.cs
- SQLString.cs
- SchemaElement.cs
- __Filters.cs
- SevenBitStream.cs
- ServiceDesigner.xaml.cs
- ExpressionQuoter.cs
- SqlError.cs
- ClientSettingsProvider.cs
- CachedCompositeFamily.cs
- SetterBaseCollection.cs
- MetafileHeaderWmf.cs