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
- DataControlFieldTypeEditor.cs
- UDPClient.cs
- MultiViewDesigner.cs
- CornerRadiusConverter.cs
- BinarySerializer.cs
- TextServicesProperty.cs
- InheritanceContextChangedEventManager.cs
- ActivityXRefPropertyEditor.cs
- Model3DCollection.cs
- XmlSchemaComplexContentExtension.cs
- RegexFCD.cs
- KnownTypeAttribute.cs
- BitmapImage.cs
- TraceHwndHost.cs
- PageSetupDialog.cs
- tooltip.cs
- Matrix3D.cs
- IWorkflowDebuggerService.cs
- AudioStateChangedEventArgs.cs
- ScaleTransform.cs
- SurrogateSelector.cs
- UrlPropertyAttribute.cs
- SystemBrushes.cs
- LicenseContext.cs
- ContactManager.cs
- dbenumerator.cs
- DynamicRendererThreadManager.cs
- DataGridCellsPanel.cs
- ColorMap.cs
- StreamFormatter.cs
- FunctionParameter.cs
- FlowLayoutSettings.cs
- UInt64.cs
- IChannel.cs
- WebPartZoneBaseDesigner.cs
- Viewport3DAutomationPeer.cs
- ObjRef.cs
- RawStylusSystemGestureInputReport.cs
- SplitContainer.cs
- WebConfigurationHost.cs
- UnsafeNativeMethods.cs
- Calendar.cs
- PolicyLevel.cs
- DbDataRecord.cs
- InfoCardRequestException.cs
- DataControlPagerLinkButton.cs
- RewritingSimplifier.cs
- GuidConverter.cs
- PermissionSet.cs
- InvalidOperationException.cs
- ToolStripSystemRenderer.cs
- Console.cs
- DialogDivider.cs
- COM2ExtendedTypeConverter.cs
- CodeNamespace.cs
- MruCache.cs
- Substitution.cs
- DeviceContext.cs
- PopupEventArgs.cs
- ServiceObjectContainer.cs
- GatewayIPAddressInformationCollection.cs
- DictionaryKeyPropertyAttribute.cs
- CqlErrorHelper.cs
- ImageField.cs
- CardSpaceShim.cs
- AnimatedTypeHelpers.cs
- InheritanceContextChangedEventManager.cs
- RootBrowserWindow.cs
- Size.cs
- CoTaskMemHandle.cs
- ComNativeDescriptor.cs
- XmlUTF8TextWriter.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- MsmqInputMessagePool.cs
- CodeIdentifier.cs
- DBNull.cs
- BitmapFrameDecode.cs
- Vector3D.cs
- PkcsMisc.cs
- DependencyObject.cs
- BaseConfigurationRecord.cs
- Debug.cs
- SettingsProviderCollection.cs
- DataServiceCollectionOfT.cs
- FtpWebRequest.cs
- TransactionsSectionGroup.cs
- AutomationPropertyInfo.cs
- StorageEndPropertyMapping.cs
- MimeReturn.cs
- TemplateBindingExpressionConverter.cs
- EditorPart.cs
- RuleSetDialog.Designer.cs
- NavigationWindow.cs
- XmlSerializationWriter.cs
- SqlDataSourceEnumerator.cs
- sqlnorm.cs
- RowParagraph.cs
- ParameterBinding.cs
- Section.cs
- WebServiceClientProxyGenerator.cs