Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / 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. 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
- ObjectMemberMapping.cs
- DataBindingCollection.cs
- FormattedTextSymbols.cs
- StylusCaptureWithinProperty.cs
- QueueProcessor.cs
- AppSettingsReader.cs
- ParameterBuilder.cs
- OracleCommand.cs
- GetKeyedHashRequest.cs
- ShapingEngine.cs
- DataViewListener.cs
- ListViewItemSelectionChangedEvent.cs
- SerialPort.cs
- SqlRowUpdatingEvent.cs
- Completion.cs
- BindStream.cs
- DataGridHelper.cs
- CombinedGeometry.cs
- SmiTypedGetterSetter.cs
- TypeUtil.cs
- DrawingAttributeSerializer.cs
- unsafenativemethodstextservices.cs
- TransportationConfigurationTypeInstallComponent.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- BinaryCommonClasses.cs
- PerformanceCountersElement.cs
- MouseGesture.cs
- TcpChannelHelper.cs
- OleDbRowUpdatedEvent.cs
- SmiEventSink_DeferedProcessing.cs
- QilScopedVisitor.cs
- HWStack.cs
- AppModelKnownContentFactory.cs
- XmlSchemaSimpleType.cs
- MissingFieldException.cs
- ControllableStoryboardAction.cs
- TriggerCollection.cs
- SlotInfo.cs
- CreateUserErrorEventArgs.cs
- CommonDialog.cs
- Rectangle.cs
- XPathDocumentNavigator.cs
- CompensationToken.cs
- HashMembershipCondition.cs
- SqlDataReader.cs
- XslException.cs
- InplaceBitmapMetadataWriter.cs
- SoapAttributeAttribute.cs
- XmlElementList.cs
- PrePrepareMethodAttribute.cs
- BufferAllocator.cs
- FormsAuthenticationModule.cs
- TableLayoutRowStyleCollection.cs
- IssuedSecurityTokenProvider.cs
- ContextMarshalException.cs
- CustomCredentialPolicy.cs
- SqlException.cs
- StrokeCollectionConverter.cs
- HttpWriter.cs
- RegexCapture.cs
- MessageQueueInstaller.cs
- ListViewItem.cs
- ArraySortHelper.cs
- ImmComposition.cs
- Annotation.cs
- PageBuildProvider.cs
- FileDialog_Vista.cs
- Camera.cs
- CapabilitiesSection.cs
- XhtmlBasicListAdapter.cs
- ThreadExceptionEvent.cs
- TextEditorCharacters.cs
- Scene3D.cs
- TabletDevice.cs
- EntityDesignerBuildProvider.cs
- LayoutInformation.cs
- CheckBoxBaseAdapter.cs
- LocatorManager.cs
- PieceDirectory.cs
- httpstaticobjectscollection.cs
- TrackingDataItem.cs
- FlowDocument.cs
- InstanceData.cs
- AuthenticationException.cs
- IdentityManager.cs
- DiscoveryDocumentSerializer.cs
- TypeConverterHelper.cs
- Evaluator.cs
- ErrorFormatterPage.cs
- ConfigXmlSignificantWhitespace.cs
- BindingManagerDataErrorEventArgs.cs
- DockPatternIdentifiers.cs
- QueryTask.cs
- ConfigDefinitionUpdates.cs
- FormsAuthenticationTicket.cs
- MultiTrigger.cs
- CryptoApi.cs
- QueryConverter.cs
- HScrollProperties.cs
- DataGridViewRowsRemovedEventArgs.cs