Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- ProgressBar.cs
- RuleSettingsCollection.cs
- Matrix3DStack.cs
- XamlPoint3DCollectionSerializer.cs
- DefaultEvaluationContext.cs
- MissingMethodException.cs
- PrintPreviewDialog.cs
- AffineTransform3D.cs
- panel.cs
- ScriptControl.cs
- DataGridRow.cs
- HttpWebRequestElement.cs
- AmbientValueAttribute.cs
- Icon.cs
- InstanceDataCollection.cs
- TextInfo.cs
- HtmlUtf8RawTextWriter.cs
- KeySpline.cs
- RuleInfoComparer.cs
- PagerSettings.cs
- UserInitiatedNavigationPermission.cs
- TraceHwndHost.cs
- ISO2022Encoding.cs
- XmlSignatureManifest.cs
- OleDbError.cs
- SignatureDescription.cs
- RowToFieldTransformer.cs
- SHA256.cs
- TransactionState.cs
- SQLInt16.cs
- PenThread.cs
- CheckedListBox.cs
- DocumentPageView.cs
- PageStatePersister.cs
- PageCatalogPart.cs
- HttpWriter.cs
- CustomLineCap.cs
- EntityDataSourceView.cs
- SynchronizationLockException.cs
- Compensation.cs
- MsmqBindingElementBase.cs
- ErasingStroke.cs
- MetadataHelper.cs
- IndependentAnimationStorage.cs
- BulletChrome.cs
- SessionPageStateSection.cs
- RadioButtonBaseAdapter.cs
- XslTransform.cs
- SocketElement.cs
- WizardPanelChangingEventArgs.cs
- StreamWriter.cs
- OleDbEnumerator.cs
- RichTextBoxDesigner.cs
- RepeaterDesigner.cs
- HttpModuleActionCollection.cs
- mediaeventshelper.cs
- UpdatePanelTriggerCollection.cs
- LocalizableAttribute.cs
- HyperLinkDesigner.cs
- QilParameter.cs
- MetafileHeaderWmf.cs
- SystemWebCachingSectionGroup.cs
- SqlDataSourceConfigureSelectPanel.cs
- SelectionProviderWrapper.cs
- XmlSchemaAnyAttribute.cs
- ToolStripPanelSelectionBehavior.cs
- TabControl.cs
- TheQuery.cs
- NullableBoolConverter.cs
- CacheHelper.cs
- NgenServicingAttributes.cs
- WebPartDisplayModeEventArgs.cs
- RuntimeTransactionHandle.cs
- IfElseDesigner.xaml.cs
- WebPart.cs
- HttpStaticObjectsCollectionWrapper.cs
- GlobalItem.cs
- DesignerActionHeaderItem.cs
- GridView.cs
- LocalizationParserHooks.cs
- HelpProvider.cs
- WorkflowMarkupElementEventArgs.cs
- PartialArray.cs
- DetailsViewInsertedEventArgs.cs
- SchemaTypeEmitter.cs
- TimeZoneInfo.cs
- TypeInfo.cs
- TextWriterTraceListener.cs
- SqlClientFactory.cs
- DataServiceConfiguration.cs
- Sequence.cs
- StyleBamlRecordReader.cs
- XsltInput.cs
- SqlTypesSchemaImporter.cs
- SqlProfileProvider.cs
- ExtractorMetadata.cs
- SelectionListDesigner.cs
- ReadOnlyDataSourceView.cs
- ListViewItem.cs
- ContainerAction.cs