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
- AncillaryOps.cs
- SettingsSection.cs
- InheritedPropertyDescriptor.cs
- CodeConditionStatement.cs
- VirtualizedContainerService.cs
- Window.cs
- ExpandableObjectConverter.cs
- DecimalConverter.cs
- ImpersonateTokenRef.cs
- RowVisual.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- CacheEntry.cs
- OracleColumn.cs
- SqlUdtInfo.cs
- SelectionUIService.cs
- CaretElement.cs
- Slider.cs
- WindowsFormsEditorServiceHelper.cs
- TextBlockAutomationPeer.cs
- ISessionStateStore.cs
- Int32CollectionValueSerializer.cs
- DetailsViewRow.cs
- IDispatchConstantAttribute.cs
- CodeCommentStatement.cs
- HandleCollector.cs
- MouseOverProperty.cs
- SchemaImporterExtensionElementCollection.cs
- PolyBezierSegment.cs
- TreeView.cs
- GenericWebPart.cs
- DSACryptoServiceProvider.cs
- Repeater.cs
- CodeDirectoryCompiler.cs
- InputLanguageProfileNotifySink.cs
- WriterOutput.cs
- TextEndOfLine.cs
- TextStore.cs
- ApplicationServiceHelper.cs
- WebPartZoneCollection.cs
- EditorBrowsableAttribute.cs
- NetworkAddressChange.cs
- CheckedPointers.cs
- LogExtentCollection.cs
- ServiceDebugBehavior.cs
- AppDomainInfo.cs
- FormatterServices.cs
- SizeAnimationClockResource.cs
- VisualTreeHelper.cs
- NameValueConfigurationElement.cs
- COAUTHINFO.cs
- Events.cs
- ToolStripLabel.cs
- SQLInt64.cs
- DeflateStream.cs
- RoutedUICommand.cs
- ManipulationDevice.cs
- ActivatedMessageQueue.cs
- ContractMapping.cs
- EntityDataSourceMemberPath.cs
- ListBoxChrome.cs
- PropertyChangeTracker.cs
- IncrementalCompileAnalyzer.cs
- WindowsScrollBarBits.cs
- ApplicationSecurityInfo.cs
- diagnosticsswitches.cs
- ScrollChrome.cs
- GorillaCodec.cs
- PtsPage.cs
- ToolStripScrollButton.cs
- MultitargetingHelpers.cs
- AffineTransform3D.cs
- TextEffect.cs
- MetabaseSettingsIis7.cs
- MailMessage.cs
- HtmlContainerControl.cs
- EventListener.cs
- PropertyMetadata.cs
- FlowDocumentReader.cs
- DriveInfo.cs
- CodeActivityContext.cs
- Padding.cs
- TextTreeUndo.cs
- DbConnectionPoolIdentity.cs
- IntSecurity.cs
- CodeFieldReferenceExpression.cs
- PerformanceCounterPermissionEntry.cs
- Brush.cs
- SpellerStatusTable.cs
- DataContext.cs
- EntityContainer.cs
- TagMapCollection.cs
- TextStore.cs
- Emitter.cs
- CommandValueSerializer.cs
- Array.cs
- CodeParameterDeclarationExpression.cs
- BufferBuilder.cs
- WorkItem.cs
- SafeCloseHandleCritical.cs
- SystemWebSectionGroup.cs