Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- FileDialog_Vista_Interop.cs
- DocumentOrderComparer.cs
- NotifyInputEventArgs.cs
- ClientConvert.cs
- SerializableAttribute.cs
- QueryTaskGroupState.cs
- AnonymousIdentificationSection.cs
- BlockUIContainer.cs
- Activator.cs
- complextypematerializer.cs
- WebServiceTypeData.cs
- ListViewSortEventArgs.cs
- FileAccessException.cs
- InfoCardSymmetricAlgorithm.cs
- CTreeGenerator.cs
- FormParameter.cs
- EdmType.cs
- XmlUnspecifiedAttribute.cs
- HttpResponse.cs
- SectionVisual.cs
- RoleGroupCollection.cs
- ServiceProviders.cs
- DesignerDataSchemaClass.cs
- AppDomainShutdownMonitor.cs
- SecurityTokenContainer.cs
- BitmapPalettes.cs
- Style.cs
- ComponentEditorForm.cs
- RayHitTestParameters.cs
- ComNativeDescriptor.cs
- HMACSHA512.cs
- Baml2006ReaderSettings.cs
- NavigatingCancelEventArgs.cs
- InputProcessorProfiles.cs
- ProcessModelInfo.cs
- WinEventQueueItem.cs
- DetailsViewPagerRow.cs
- HttpListenerResponse.cs
- PromptStyle.cs
- MessageBox.cs
- TcpChannelHelper.cs
- EventData.cs
- SecurityBindingElement.cs
- FlowDocumentReader.cs
- DataStreamFromComStream.cs
- XmlElementElement.cs
- BrowserCapabilitiesCodeGenerator.cs
- RuntimeConfigurationRecord.cs
- SafeNativeMethods.cs
- Int64Animation.cs
- MessageQueuePermissionEntryCollection.cs
- DispatcherEventArgs.cs
- HideDisabledControlAdapter.cs
- ToolboxItemFilterAttribute.cs
- WebBrowserProgressChangedEventHandler.cs
- XmlSchemaAttribute.cs
- GradientStop.cs
- DynamicPropertyReader.cs
- CopyCodeAction.cs
- InstanceStore.cs
- FileDataSourceCache.cs
- WindowsGraphicsWrapper.cs
- XmlObjectSerializerWriteContextComplex.cs
- RuntimeHandles.cs
- HtmlEncodedRawTextWriter.cs
- OleDbConnection.cs
- AttachmentCollection.cs
- SqlVisitor.cs
- InvalidDataException.cs
- ProviderSettings.cs
- TransportOutputChannel.cs
- WindowsRegion.cs
- WindowsButton.cs
- MethodAccessException.cs
- Oid.cs
- PersonalizationProviderHelper.cs
- HttpWriter.cs
- BufferModeSettings.cs
- BindingContext.cs
- CoTaskMemHandle.cs
- DataErrorValidationRule.cs
- MemoryMappedView.cs
- UidManager.cs
- TransformationRules.cs
- NativeMethodsCLR.cs
- XmlDataLoader.cs
- ExpandCollapsePattern.cs
- MimeFormReflector.cs
- MarkupCompilePass1.cs
- OrderByBuilder.cs
- BuildProvidersCompiler.cs
- SessionState.cs
- MenuTracker.cs
- SystemIPv4InterfaceProperties.cs
- WindowsIPAddress.cs
- ProfileEventArgs.cs
- ZeroOpNode.cs
- SortedSetDebugView.cs
- TypeUnloadedException.cs
- CombinedGeometry.cs