Приветствую!
Необходимо узнать для текущей темы XP: какой шрифт и цвет используется в tray clock.
Чуточку подробностей на примере стандартной темы:
В ресурсах файла %SYSTEMROOT%\Resources\Themes\Luna\luna.msstyles зашиты настройки тем,
например: RES:\\TEXTFILE\NORMALBLUE.INI есть настройки default'ной темы.
Так вот, следущий фрагмент этого файла описывает искомую информацию:
[TrayNotify::Clock]
Font = Tahoma, 8
TextColor = 255 255 255
Естественно, шрифт и цвет получаем не из ресурсов, а программно.
Вот где появляются камни ...
Окно trayclock находим так:
Cначала FindWindow("Shell_TrayWnd", NULL)
Затем у "Shell_TrayWnd" ищем child "TrayNotifyWnd", а у него уже child "TrayClockWClass"
HTHEME пытаюсь получить так:
OpenThemeData(hWnd, 'clock'), но регулярно возвращается NULL.
Пробовал hWnd всех вышеперечисленных окон, окно Desktop'а.
GetWindowTheme тоже возвращает NULL.
По идее, искомый результат даёт один из вызовов функции GetThemeColor:
GetThemeColor(hTheme, CLP_TIME, CLS_NORMAL, TMT_COLOR, aColor) или
GetThemeColor(hTheme, CLP_TIME, CLS_NORMAL, TMT_TEXTCOLOR, aColor)
(других parts и states у trayclock нету (см. TmSchema.h), другие property types по идее не подходят)
Может, нельзя получить HTHEME давая HWND окна другого процесса?
PS
Пробовал в Delphi 7 используя UxTheme.pas
--
Yaroslav Mironov,
AlfaSoft Research Labs
mailto:mironov@alfasoftweb.com
http://www.alfasoftweb.com