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
- XmlSerializerAssemblyAttribute.cs
- XmlSchemaValidationException.cs
- AssertSection.cs
- Gdiplus.cs
- ExpressionPrefixAttribute.cs
- TabletDeviceInfo.cs
- OrCondition.cs
- TypedCompletedAsyncResult.cs
- Int64Storage.cs
- BitmapEffectGeneralTransform.cs
- TextSyndicationContentKindHelper.cs
- _ShellExpression.cs
- RealProxy.cs
- ChannelSinkStacks.cs
- JsonFormatGeneratorStatics.cs
- DocumentPageHost.cs
- OdbcHandle.cs
- DefaultPropertyAttribute.cs
- CodeExporter.cs
- AncestorChangedEventArgs.cs
- LocalValueEnumerator.cs
- SqlStatistics.cs
- EnvironmentPermission.cs
- Vector3DCollection.cs
- RuntimeCompatibilityAttribute.cs
- AffineTransform3D.cs
- XmlSchemaSubstitutionGroup.cs
- PriorityQueue.cs
- OleStrCAMarshaler.cs
- DirectoryLocalQuery.cs
- Size3DConverter.cs
- PageCodeDomTreeGenerator.cs
- GroupByQueryOperator.cs
- TaskFileService.cs
- CancellationHandler.cs
- TCEAdapterGenerator.cs
- MessageEventSubscriptionService.cs
- TextEditorTyping.cs
- GetLedgerEntryForRecipientRequest.cs
- ColorMap.cs
- ProviderMetadata.cs
- FieldMetadata.cs
- ConfigurationCollectionAttribute.cs
- XPathDocument.cs
- Encoding.cs
- CssClassPropertyAttribute.cs
- CuspData.cs
- ResourcePart.cs
- FileSystemWatcher.cs
- ConfigXmlDocument.cs
- NetworkInformationException.cs
- SystemUnicastIPAddressInformation.cs
- Duration.cs
- Interlocked.cs
- QueryGeneratorBase.cs
- HashAlgorithm.cs
- CodeEntryPointMethod.cs
- _LoggingObject.cs
- ExpressionBuilder.cs
- UrlAuthFailedErrorFormatter.cs
- CodeTypeReferenceSerializer.cs
- Table.cs
- TableLayoutStyleCollection.cs
- QuadTree.cs
- AppDomainUnloadedException.cs
- ModuleBuilder.cs
- XmlBoundElement.cs
- ComponentDispatcher.cs
- ZipArchive.cs
- BlurEffect.cs
- XmlSchemaObjectCollection.cs
- BackgroundFormatInfo.cs
- EncryptedXml.cs
- thaishape.cs
- CheckoutException.cs
- RoutedEventValueSerializer.cs
- EdmSchemaAttribute.cs
- NumericUpDown.cs
- DataGridTablesFactory.cs
- HitTestWithPointDrawingContextWalker.cs
- Query.cs
- RegistrationServices.cs
- HyperLinkStyle.cs
- _ContextAwareResult.cs
- InvalidAsynchronousStateException.cs
- ExternalFile.cs
- WebReferencesBuildProvider.cs
- ChildTable.cs
- x509store.cs
- DataControlCommands.cs
- FormViewCommandEventArgs.cs
- EdmToObjectNamespaceMap.cs
- MutableAssemblyCacheEntry.cs
- OperandQuery.cs
- ZipArchive.cs
- ValueUtilsSmi.cs
- EmbeddedMailObject.cs
- TextBoxView.cs
- HijriCalendar.cs
- ActiveXHost.cs