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
- CounterNameConverter.cs
- PaperSize.cs
- GrammarBuilderPhrase.cs
- WindowsGraphics2.cs
- HtmlPanelAdapter.cs
- TextOptions.cs
- WhitespaceRuleReader.cs
- SqlXml.cs
- ManagementScope.cs
- JsonGlobals.cs
- ScaleTransform.cs
- HTMLTextWriter.cs
- ButtonFieldBase.cs
- DataTablePropertyDescriptor.cs
- HitTestDrawingContextWalker.cs
- IndicShape.cs
- Axis.cs
- XamlParser.cs
- DeclaredTypeValidatorAttribute.cs
- MinimizableAttributeTypeConverter.cs
- NavigationProperty.cs
- TransportListener.cs
- HttpCachePolicyWrapper.cs
- CompensatableTransactionScopeActivity.cs
- PointHitTestParameters.cs
- Oid.cs
- MappingItemCollection.cs
- MenuItem.cs
- XamlSerializationHelper.cs
- ComboBoxItem.cs
- MailAddressCollection.cs
- ReachBasicContext.cs
- PatternMatcher.cs
- TTSVoice.cs
- StrongNameMembershipCondition.cs
- PartialArray.cs
- InvalidOleVariantTypeException.cs
- MulticastDelegate.cs
- SoapIgnoreAttribute.cs
- CharacterMetrics.cs
- WorkingDirectoryEditor.cs
- XmlAttributeAttribute.cs
- ToolTipAutomationPeer.cs
- TraceLog.cs
- CodeConditionStatement.cs
- DomNameTable.cs
- MultiSelector.cs
- GacUtil.cs
- OracleConnectionStringBuilder.cs
- DocumentSequenceHighlightLayer.cs
- ViewPort3D.cs
- RawStylusInput.cs
- SchemaMerger.cs
- HttpListenerResponse.cs
- FieldToken.cs
- ApplicationSecurityManager.cs
- Control.cs
- Hex.cs
- BamlWriter.cs
- Tokenizer.cs
- ModuleBuilderData.cs
- WebServiceEnumData.cs
- FixedDSBuilder.cs
- ServiceOperation.cs
- PeerToPeerException.cs
- CodeDomDesignerLoader.cs
- RegistryConfigurationProvider.cs
- DataStorage.cs
- AssemblyName.cs
- GuidConverter.cs
- FtpRequestCacheValidator.cs
- IncrementalCompileAnalyzer.cs
- XmlNodeComparer.cs
- FontUnit.cs
- DbParameterCollection.cs
- PackWebResponse.cs
- KoreanCalendar.cs
- DynamicDocumentPaginator.cs
- CustomSignedXml.cs
- TypeLibConverter.cs
- Grid.cs
- ZipIOLocalFileDataDescriptor.cs
- MiniMapControl.xaml.cs
- DescendantOverDescendantQuery.cs
- XmlBindingWorker.cs
- HandleRef.cs
- QilReference.cs
- RecordsAffectedEventArgs.cs
- SelectedDatesCollection.cs
- Cell.cs
- SiteMapNodeItemEventArgs.cs
- DocumentGridContextMenu.cs
- XmlProcessingInstruction.cs
- DataControlFieldCollection.cs
- printdlgexmarshaler.cs
- CqlLexerHelpers.cs
- EntityDataSourceQueryBuilder.cs
- StickyNote.cs
- DataGridViewRowHeaderCell.cs
- GeometryCollection.cs