Если я правильно понял ваш вопрос, я бы порекомендовал вам использовать SetWindowTheme .
Вы должны проверить информацию, предоставленную по ссылке выше, чтобы увидеть, что docs.microsoft
(прежнее msdn
) говорит нам в разделе Remark
:
Когда pszSubAppName и pszSubIdList равны NULLменеджер тем удаляет ранее примененные ассоциации.Вы можете предотвратить применение визуальных стилей к указанному окну, указав пустую строку (L ""), которая не соответствует ни одной записи раздела.
Таким образом, имея это в виду, вы можете легко ограничить тематику для любого окна, для которого Handle
известно, вызывая SetWindowTheme
с обоими аргументами, установленными на ", между скобками должен быть пробел».
Кстати, я бы не советовал убивать темы для всей ОС из вашего приложения.Лично я удаляю любую программу, которая имеет такую полезную функцию .
Важное дополнение!
Через некоторое время я снова прочитал ваш вопрос и могу ответить на первую часть вашего вопроса.
Вы можете получитьинформация о теме через UXTheme
единицу.
В первую очередь вы должны использовать эти две функции:
- GetCurrentThemeName
- GetThemeDocumentationProperty
Вот код, который показывает, как это сделать.
uses
..., UXTheme;
var
ThemeName: Array[0..512] of Char;
ThemeColorScheme: Array[0..512] of Char;
ThemeSizeName: Array[0..512] of Char;
PropertyName: Array[0..512] of Char;
begin
UXTheme.GetCurrentThemeName(@ThemeName, SizeOf(ThemeName), @ThemeColorScheme, SizeOf(ThemeColorScheme), @ThemeSizeName, SizeOf(ThemeSizeName));
UXTheme.GetThemeDocumentationProperty(@ThemeName, SZ_THDOCPROP_CANONICALNAME, @PropertyName, SizeOf(PropertyName));
end;
Пожалуйста, внимательно прочитайте о GetThemeDocumentationProperty
- эта функция принимает один из аргументов, отвечающий за то, какое свойство темы ОС будет возвращено.Согласно docs.microsoft
, флаг SZ_THDOCPROP_CANONICALNAME
в приведенном выше коде вернет строковое свойство для
Извлекает название темы.
Таким образом, вы сможете проверить, какая тема используется в данный момент.
Но вы все равно можете просто отключить темы для своего собственного приложения.