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
- CodeCatchClause.cs
- InkCollectionBehavior.cs
- SoapMessage.cs
- XPathChildIterator.cs
- WebPartZoneBase.cs
- CqlBlock.cs
- Pen.cs
- WizardDesigner.cs
- MethodImplAttribute.cs
- QEncodedStream.cs
- DataBoundControlAdapter.cs
- DocumentGrid.cs
- FormViewAutoFormat.cs
- XamlClipboardData.cs
- HwndAppCommandInputProvider.cs
- CodeParameterDeclarationExpression.cs
- XmlEnumAttribute.cs
- CategoryEditor.cs
- AutoResetEvent.cs
- FlowchartStart.xaml.cs
- TPLETWProvider.cs
- BrushMappingModeValidation.cs
- BlurBitmapEffect.cs
- DataTransferEventArgs.cs
- WindowsSlider.cs
- IdentifierCreationService.cs
- TextTreeText.cs
- OleDbInfoMessageEvent.cs
- EventLogEntry.cs
- ConsoleTraceListener.cs
- PropertyConverter.cs
- IteratorFilter.cs
- Converter.cs
- CheckBox.cs
- ControlBuilderAttribute.cs
- SocketException.cs
- CommandEventArgs.cs
- SelectedGridItemChangedEvent.cs
- WebReferencesBuildProvider.cs
- XmlNamespaceManager.cs
- FormsAuthenticationUserCollection.cs
- DataGridViewRowsRemovedEventArgs.cs
- WebPartEventArgs.cs
- DataTable.cs
- BufferAllocator.cs
- ObjectQueryState.cs
- ThreadExceptionEvent.cs
- SafeFileHandle.cs
- IsolatedStorage.cs
- WebScriptMetadataFormatter.cs
- FixedTextSelectionProcessor.cs
- BinaryObjectInfo.cs
- NullReferenceException.cs
- StreamGeometry.cs
- ApplyImportsAction.cs
- NativeCppClassAttribute.cs
- TextTreeFixupNode.cs
- ObjectDataSourceSelectingEventArgs.cs
- QilFunction.cs
- DefaultPropertyAttribute.cs
- TableLayoutSettingsTypeConverter.cs
- Typeface.cs
- mediaeventargs.cs
- SqlRewriteScalarSubqueries.cs
- DictionaryEntry.cs
- MaterializeFromAtom.cs
- CodeTypeReference.cs
- DataBinding.cs
- OleDbRowUpdatingEvent.cs
- SoapFault.cs
- WindowsListView.cs
- EventLog.cs
- HybridCollection.cs
- ReflectTypeDescriptionProvider.cs
- NativeMethods.cs
- CompressStream.cs
- ToolStripStatusLabel.cs
- FileStream.cs
- SubMenuStyle.cs
- BaseConfigurationRecord.cs
- SymbolPair.cs
- PropertySourceInfo.cs
- EnumBuilder.cs
- ParameterElement.cs
- CustomError.cs
- WebBrowserHelper.cs
- _TransmitFileOverlappedAsyncResult.cs
- MailWriter.cs
- IFlowDocumentViewer.cs
- AttributeQuery.cs
- TokenBasedSetEnumerator.cs
- PersonalizationProvider.cs
- GridViewUpdatedEventArgs.cs
- Tile.cs
- RemoveFromCollection.cs
- XmlIterators.cs
- DataStreams.cs
- AdobeCFFWrapper.cs
- SurrogateSelector.cs
- TopClause.cs