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
- CodeTypeReferenceExpression.cs
- Perspective.cs
- TheQuery.cs
- HtmlControl.cs
- ToolStripLabel.cs
- CryptoConfig.cs
- ShaperBuffers.cs
- DataGridViewComponentPropertyGridSite.cs
- Point3DCollectionConverter.cs
- ResourceBinder.cs
- ISO2022Encoding.cs
- ContainerCodeDomSerializer.cs
- ActiveXHost.cs
- UdpDiscoveryEndpointProvider.cs
- TypefaceCollection.cs
- Lasso.cs
- Root.cs
- AsyncParams.cs
- AddInAttribute.cs
- UnsafeNativeMethods.cs
- TrackingDataItem.cs
- UICuesEvent.cs
- UrlPropertyAttribute.cs
- ParamArrayAttribute.cs
- AuthenticationServiceManager.cs
- SemanticValue.cs
- TabControl.cs
- RNGCryptoServiceProvider.cs
- TableAdapterManagerHelper.cs
- BitmapData.cs
- SignatureDescription.cs
- xmlsaver.cs
- RequiredFieldValidator.cs
- Visual3D.cs
- BehaviorEditorPart.cs
- TextLineBreak.cs
- MessageSecurityVersionConverter.cs
- CfgRule.cs
- AdornerLayer.cs
- AuditLog.cs
- DataGridViewRowEventArgs.cs
- DrawingGroupDrawingContext.cs
- Span.cs
- DataObjectCopyingEventArgs.cs
- NonceToken.cs
- SoapHeaderAttribute.cs
- Identifier.cs
- MsmqHostedTransportConfiguration.cs
- HostingEnvironmentSection.cs
- WebPartUserCapability.cs
- StringSource.cs
- RelationshipType.cs
- EndOfStreamException.cs
- DependencyPropertyKey.cs
- IApplicationTrustManager.cs
- HtmlInputText.cs
- WebService.cs
- LastQueryOperator.cs
- ResourceReferenceKeyNotFoundException.cs
- MachineSettingsSection.cs
- BitmapEffectDrawing.cs
- SpellerStatusTable.cs
- IndexedDataBuffer.cs
- HitTestWithGeometryDrawingContextWalker.cs
- ObjectStorage.cs
- CacheMemory.cs
- CommandHelpers.cs
- RealizedColumnsBlock.cs
- MatrixValueSerializer.cs
- FusionWrap.cs
- VirtualDirectoryMapping.cs
- ToolStripHighContrastRenderer.cs
- HttpRawResponse.cs
- X509Certificate.cs
- Variable.cs
- AvTraceFormat.cs
- ImageCodecInfo.cs
- StatusBarPanel.cs
- WsatRegistrationHeader.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- PhonemeConverter.cs
- _BufferOffsetSize.cs
- DataGridViewComboBoxEditingControl.cs
- HtmlControlDesigner.cs
- EarlyBoundInfo.cs
- MeasureItemEvent.cs
- ReaderWriterLock.cs
- DbConnectionStringBuilder.cs
- SqlBuilder.cs
- ObjectDataSourceChooseMethodsPanel.cs
- StoreAnnotationsMap.cs
- XXXOnTypeBuilderInstantiation.cs
- PrintPageEvent.cs
- DataSourceView.cs
- CompilerState.cs
- ExpandCollapsePattern.cs
- TextPenaltyModule.cs
- OdbcParameterCollection.cs
- NullExtension.cs
- RepeaterDesigner.cs