Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Win32 / UxThemeWrapper.cs / 1305600 / 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
- GlyphCache.cs
- Geometry3D.cs
- CaretElement.cs
- EditCommandColumn.cs
- TextDecorationUnitValidation.cs
- StateMachineAction.cs
- ParseChildrenAsPropertiesAttribute.cs
- HttpModuleAction.cs
- OdbcInfoMessageEvent.cs
- DoubleLink.cs
- MetadataArtifactLoaderCompositeResource.cs
- RegexStringValidator.cs
- GuidTagList.cs
- SmiConnection.cs
- BigInt.cs
- WindowsFormsSynchronizationContext.cs
- FixedFindEngine.cs
- FileCodeGroup.cs
- WebPartTransformerAttribute.cs
- WindowsTokenRoleProvider.cs
- JournalEntry.cs
- AnonymousIdentificationModule.cs
- ScrollItemPattern.cs
- ToolStripDropDownButton.cs
- DetailsViewModeEventArgs.cs
- ObjectSet.cs
- EncoderBestFitFallback.cs
- Style.cs
- GroupBoxRenderer.cs
- CompilerParameters.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- Compiler.cs
- SmtpFailedRecipientsException.cs
- WebPartTracker.cs
- PolyLineSegmentFigureLogic.cs
- XmlMembersMapping.cs
- DocumentScope.cs
- CodeNamespaceImportCollection.cs
- UIElementHelper.cs
- GenericsInstances.cs
- WorkflowPrinting.cs
- PartManifestEntry.cs
- SecureUICommand.cs
- DetailsViewActionList.cs
- SecurityContextCookieSerializer.cs
- DesignTimeTemplateParser.cs
- Button.cs
- InternalCache.cs
- HostedHttpTransportManager.cs
- DataObjectMethodAttribute.cs
- HostDesigntimeLicenseContext.cs
- RTTrackingProfile.cs
- BuilderInfo.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- SafeHandles.cs
- SupportingTokenProviderSpecification.cs
- HotSpot.cs
- MarkupCompiler.cs
- JsonDataContract.cs
- WeakEventTable.cs
- TemplateKeyConverter.cs
- WebPartUtil.cs
- CookieHandler.cs
- WpfXamlMember.cs
- MetaForeignKeyColumn.cs
- DesignOnlyAttribute.cs
- DifferencingCollection.cs
- DefaultPropertyAttribute.cs
- ConditionalBranch.cs
- DbModificationCommandTree.cs
- DateTimeConverter2.cs
- XmlSchemaGroupRef.cs
- ProcessThread.cs
- UnionExpr.cs
- Assembly.cs
- CaseCqlBlock.cs
- Expander.cs
- DataTrigger.cs
- ToolboxItemCollection.cs
- ComponentEditorForm.cs
- XmlValueConverter.cs
- ZipIORawDataFileBlock.cs
- Emitter.cs
- EntityModelBuildProvider.cs
- _CacheStreams.cs
- SizeChangedEventArgs.cs
- MediaSystem.cs
- TransformValueSerializer.cs
- UpdatePanelTriggerCollection.cs
- RoleBoolean.cs
- XhtmlConformanceSection.cs
- RadioButton.cs
- CodeMemberMethod.cs
- PreservationFileWriter.cs
- WaitHandle.cs
- ComponentResourceManager.cs
- MessageQueueConverter.cs
- HtmlInputCheckBox.cs
- KeyConverter.cs
- LambdaCompiler.Statements.cs