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
- RegexCode.cs
- SectionXmlInfo.cs
- FixedTextContainer.cs
- UnauthorizedWebPart.cs
- ExplicitDiscriminatorMap.cs
- StaticSiteMapProvider.cs
- SqlClientWrapperSmiStreamChars.cs
- base64Transforms.cs
- XamlInt32CollectionSerializer.cs
- Timeline.cs
- XmlHelper.cs
- unsafenativemethodstextservices.cs
- Rect.cs
- PageThemeBuildProvider.cs
- ToolStripControlHost.cs
- FilteredXmlReader.cs
- SafeFileMappingHandle.cs
- HexParser.cs
- SecurityCapabilities.cs
- DotNetATv1WindowsLogEntryDeserializer.cs
- ApplyImportsAction.cs
- WebPartConnectionsDisconnectVerb.cs
- GradientSpreadMethodValidation.cs
- ExtendedTransformFactory.cs
- BindingSource.cs
- SerializationException.cs
- ThreadStateException.cs
- ConfigurationValues.cs
- ObjectDataSourceStatusEventArgs.cs
- WmpBitmapDecoder.cs
- UnknownBitmapEncoder.cs
- ListViewItemEventArgs.cs
- SelectedDatesCollection.cs
- ServiceMoniker.cs
- IndexedWhereQueryOperator.cs
- DataGridSortingEventArgs.cs
- ProjectionPath.cs
- DelayedRegex.cs
- LinkedDataMemberFieldEditor.cs
- FtpWebResponse.cs
- HttpStreams.cs
- SettingsPropertyNotFoundException.cs
- RelationshipDetailsRow.cs
- FormsAuthenticationModule.cs
- SurrogateDataContract.cs
- WebCategoryAttribute.cs
- LinkLabel.cs
- FtpWebResponse.cs
- ChineseLunisolarCalendar.cs
- DataSpaceManager.cs
- CodeObjectCreateExpression.cs
- DbProviderFactoriesConfigurationHandler.cs
- ListViewSelectEventArgs.cs
- ResourceWriter.cs
- DetailsViewInsertedEventArgs.cs
- SqlDataSource.cs
- BookmarkScopeManager.cs
- WebContext.cs
- ObjectFullSpanRewriter.cs
- PersonalizationAdministration.cs
- DbDataRecord.cs
- ResourcePermissionBaseEntry.cs
- RenderDataDrawingContext.cs
- AuthenticationModeHelper.cs
- HtmlTextArea.cs
- PtsCache.cs
- WsdlBuildProvider.cs
- RuleSettings.cs
- AnimationStorage.cs
- SelectionService.cs
- DataGridItemEventArgs.cs
- SQLBinaryStorage.cs
- DrawToolTipEventArgs.cs
- WebMethodAttribute.cs
- AxParameterData.cs
- TransactionChannelFaultConverter.cs
- PaperSource.cs
- RowType.cs
- OperationExecutionFault.cs
- ContextMenu.cs
- RootProfilePropertySettingsCollection.cs
- ManipulationBoundaryFeedbackEventArgs.cs
- CollectionsUtil.cs
- DoubleSumAggregationOperator.cs
- SmtpSection.cs
- EventWaitHandleSecurity.cs
- Baml2006ReaderFrame.cs
- RegexStringValidator.cs
- DataContractSerializerFaultFormatter.cs
- DataSourceSelectArguments.cs
- IDQuery.cs
- InstallerTypeAttribute.cs
- SessionPageStatePersister.cs
- DecimalMinMaxAggregationOperator.cs
- recordstate.cs
- printdlgexmarshaler.cs
- DocumentsTrace.cs
- IDReferencePropertyAttribute.cs
- MatrixAnimationUsingKeyFrames.cs
- IPCCacheManager.cs