Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- IndexedGlyphRun.cs
- PropertyItem.cs
- NativeMethods.cs
- LinkButton.cs
- SecurityState.cs
- SessionStateContainer.cs
- CatalogZone.cs
- ChangeInterceptorAttribute.cs
- MatchAttribute.cs
- FeatureAttribute.cs
- Tablet.cs
- FixedPageProcessor.cs
- Char.cs
- Choices.cs
- altserialization.cs
- DetailsViewInsertedEventArgs.cs
- SQLCharsStorage.cs
- XmlHierarchicalDataSourceView.cs
- IndependentlyAnimatedPropertyMetadata.cs
- ImageButton.cs
- FileUtil.cs
- OracleConnectionString.cs
- AssertSection.cs
- BaseDataBoundControlDesigner.cs
- ScopeCollection.cs
- DesignerCategoryAttribute.cs
- HyperLink.cs
- SyndicationSerializer.cs
- PenContexts.cs
- SolidColorBrush.cs
- SharedDp.cs
- FlowDocumentReader.cs
- TerminatorSinks.cs
- ProgressBar.cs
- PagedDataSource.cs
- HMACRIPEMD160.cs
- NavigationProgressEventArgs.cs
- ExceptionUtil.cs
- StringCollection.cs
- CompiledELinqQueryState.cs
- EdmTypeAttribute.cs
- ServiceRouteHandler.cs
- SqlConnectionStringBuilder.cs
- Message.cs
- AdditionalEntityFunctions.cs
- GlyphTypeface.cs
- XPathNavigatorReader.cs
- TextProperties.cs
- XmlEventCache.cs
- ItemCheckedEvent.cs
- WebControlAdapter.cs
- WinEventTracker.cs
- ObjectListShowCommandsEventArgs.cs
- MarkupCompilePass1.cs
- SqlDataReader.cs
- ScriptManager.cs
- Rect3DConverter.cs
- ZipIOFileItemStream.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- ContainerControl.cs
- OdbcDataReader.cs
- SatelliteContractVersionAttribute.cs
- TraceLevelStore.cs
- DateTimeStorage.cs
- SelectionListComponentEditor.cs
- TextServicesPropertyRanges.cs
- TreeNodeCollection.cs
- MimeMapping.cs
- VsPropertyGrid.cs
- BooleanStorage.cs
- ControlFilterExpression.cs
- DataTableReader.cs
- GraphicsContext.cs
- Point3DValueSerializer.cs
- Marshal.cs
- ChannelBinding.cs
- TextSyndicationContent.cs
- UnionExpr.cs
- HijriCalendar.cs
- DrawListViewItemEventArgs.cs
- UIElement3D.cs
- ResourceProviderFactory.cs
- MsiStyleLogWriter.cs
- TriggerAction.cs
- UriExt.cs
- SubpageParaClient.cs
- TypeDescriptionProviderAttribute.cs
- DataBoundControlActionList.cs
- mongolianshape.cs
- UnsafeNativeMethods.cs
- BooleanAnimationBase.cs
- XmlWriterSettings.cs
- CommandHelper.cs
- LinkLabel.cs
- StyleBamlRecordReader.cs
- WebPartConnectionsDisconnectVerb.cs
- BitVec.cs
- XmlHelper.cs
- LayoutInformation.cs
- Int32KeyFrameCollection.cs