Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RemotingException.cs
- SortableBindingList.cs
- WindowsSysHeader.cs
- KnownAssemblyEntry.cs
- FormatterServicesNoSerializableCheck.cs
- ImageClickEventArgs.cs
- mansign.cs
- AppSecurityManager.cs
- DataBindingList.cs
- EdgeModeValidation.cs
- TimeSpanStorage.cs
- BindingSource.cs
- VerificationException.cs
- RelationalExpressions.cs
- GridToolTip.cs
- HtmlValidationSummaryAdapter.cs
- BooleanSwitch.cs
- ValidationRuleCollection.cs
- XsdDataContractImporter.cs
- DbReferenceCollection.cs
- CompositeClientFormatter.cs
- ApplicationBuildProvider.cs
- WebBrowsableAttribute.cs
- VirtualizingStackPanel.cs
- Types.cs
- EncoderReplacementFallback.cs
- RectangleHotSpot.cs
- CanonicalFormWriter.cs
- ManagedCodeMarkers.cs
- WebConfigurationFileMap.cs
- BamlReader.cs
- MimeObjectFactory.cs
- Helper.cs
- PageCache.cs
- AdministrationHelpers.cs
- XmlSchemaElement.cs
- CompilationLock.cs
- TreeView.cs
- ResourceReferenceExpression.cs
- EntityDataSourceQueryBuilder.cs
- Triplet.cs
- DefaultEventAttribute.cs
- HttpResponseBase.cs
- GridViewUpdateEventArgs.cs
- OleDbReferenceCollection.cs
- entitydatasourceentitysetnameconverter.cs
- _CommandStream.cs
- MatrixAnimationUsingKeyFrames.cs
- SafeTimerHandle.cs
- AttributeProviderAttribute.cs
- EntityContainer.cs
- SqlCaseSimplifier.cs
- QueryPageSettingsEventArgs.cs
- ObjectQueryState.cs
- ToolStripGripRenderEventArgs.cs
- AddInAdapter.cs
- DesignDataSource.cs
- XmlUrlEditor.cs
- HandleInitializationContext.cs
- FontWeight.cs
- NameObjectCollectionBase.cs
- PropertyGridEditorPart.cs
- DeclarativeCatalogPart.cs
- DataExpression.cs
- TextParagraphProperties.cs
- thaishape.cs
- OleDbStruct.cs
- rsa.cs
- RuntimeVariablesExpression.cs
- DetailsViewRowCollection.cs
- PagePropertiesChangingEventArgs.cs
- LocatorGroup.cs
- PreservationFileWriter.cs
- GeneralTransform.cs
- DispatcherSynchronizationContext.cs
- ProgramNode.cs
- ViewStateModeByIdAttribute.cs
- ModelItemExtensions.cs
- CuspData.cs
- ParameterCollectionEditorForm.cs
- UInt32Converter.cs
- TextFormattingConverter.cs
- NativeMethods.cs
- GradientPanel.cs
- StringFreezingAttribute.cs
- EntityDataReader.cs
- DesignerDataSourceView.cs
- WebPartZone.cs
- XmlUrlEditor.cs
- CodeAccessSecurityEngine.cs
- InputProcessorProfilesLoader.cs
- TransformedBitmap.cs
- InvalidAsynchronousStateException.cs
- PersistenceTask.cs
- AttributeCollection.cs
- NominalTypeEliminator.cs
- RoutedEventConverter.cs
- ConditionCollection.cs
- Drawing.cs
- Brush.cs