Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- UInt32Storage.cs
- EmptyReadOnlyDictionaryInternal.cs
- Style.cs
- SubpageParaClient.cs
- LineMetrics.cs
- MergeExecutor.cs
- COM2ColorConverter.cs
- ApplicationServicesHostFactory.cs
- ValidatorCollection.cs
- XmlTextEncoder.cs
- ExpressionBindings.cs
- DataGridViewSortCompareEventArgs.cs
- SimpleTextLine.cs
- WindowsSecurityTokenAuthenticator.cs
- JournalEntry.cs
- FileDialogCustomPlacesCollection.cs
- DependencyObjectPropertyDescriptor.cs
- NumericPagerField.cs
- HttpWebRequestElement.cs
- ThemeConfigurationDialog.cs
- XPathDocumentBuilder.cs
- CultureTable.cs
- ImageKeyConverter.cs
- PeerPresenceInfo.cs
- ConstraintManager.cs
- DataGridViewCellValidatingEventArgs.cs
- ActivityCodeDomSerializationManager.cs
- CustomWebEventKey.cs
- MatrixTransform3D.cs
- HtmlInputFile.cs
- AuthenticationSection.cs
- MsmqIntegrationChannelFactory.cs
- Error.cs
- Margins.cs
- TextEditorTables.cs
- ItemDragEvent.cs
- HttpRawResponse.cs
- NativeDirectoryServicesQueryAPIs.cs
- PerformanceCountersBase.cs
- XmlWriterSettings.cs
- XmlSiteMapProvider.cs
- QueryExecutionOption.cs
- ToolStripStatusLabel.cs
- WindowsRegion.cs
- CellLabel.cs
- Automation.cs
- ItemsChangedEventArgs.cs
- versioninfo.cs
- ButtonBase.cs
- DllHostedComPlusServiceHost.cs
- StringArrayConverter.cs
- SignedPkcs7.cs
- PerfCounters.cs
- WindowsFormsSectionHandler.cs
- BaseHashHelper.cs
- ResourcePermissionBaseEntry.cs
- Window.cs
- RegexCompiler.cs
- ImplicitInputBrush.cs
- StatusCommandUI.cs
- CorrelationInitializer.cs
- SoapSchemaMember.cs
- XmlSchemaNotation.cs
- ProfilePropertyMetadata.cs
- ListViewUpdatedEventArgs.cs
- TokenBasedSetEnumerator.cs
- SequentialUshortCollection.cs
- FeatureAttribute.cs
- ManifestResourceInfo.cs
- LinkArea.cs
- RuntimeHelpers.cs
- SqlPersonalizationProvider.cs
- WebControl.cs
- COM2ExtendedBrowsingHandler.cs
- CodeDirectionExpression.cs
- EntryIndex.cs
- SqlTypesSchemaImporter.cs
- CompilerLocalReference.cs
- ObjectCloneHelper.cs
- CachedCompositeFamily.cs
- itemelement.cs
- _AutoWebProxyScriptHelper.cs
- ColumnResizeUndoUnit.cs
- SortDescriptionCollection.cs
- RootBrowserWindowProxy.cs
- DocumentGridContextMenu.cs
- TextRangeEdit.cs
- DateTimeFormat.cs
- XmlSchemaParticle.cs
- GZipStream.cs
- VsPropertyGrid.cs
- ListenerHandler.cs
- DataGridViewCellStyleConverter.cs
- UserControl.cs
- DataServiceOperationContext.cs
- ContextMenu.cs
- JsonServiceDocumentSerializer.cs
- AndCondition.cs
- followingquery.cs
- IIS7WorkerRequest.cs