Отвечаю на свой вопрос сам - вдруг кому пригодится. Наличие или отсутствие aero-темы при запуске можно определить следующим образом:
function IsThisAero: Boolean;
type
TDwmIsCompositionEnabledFunc = function(out pfEnabled: BOOL): HRESULT; stdcall;
var
IsEnabled: BOOL;
ModuleHandle: HMODULE;
DwmIsCompositionEnabledFunc: TDwmIsCompositionEnabledFunc;
begin
Result := False;
if Win32MajorVersion>=6 then // Vista or Windows 7+
begin
ModuleHandle := LoadLibrary('dwmapi.dll');
if ModuleHandle <> 0 then
try
@DwmIsCompositionEnabledFunc := GetProcAddress(ModuleHandle, 'DwmIsCompositionEnabled');
if Assigned(DwmIsCompositionEnabledFunc) then
if DwmIsCompositionEnabledFunc(IsEnabled) = S_OK then
Result := IsEnabled;
finally
FreeLibrary(ModuleHandle);
end;
end;
end;
Критичным в моем случае оказалось то, что при запуске без aero-темы, но с экранным масштабированием многое масштабируется по-другому. Точнее сказать, одно масштабируется, а другое нет. Соответственно, чтобы компоненты приложения выравнивались, как задумано, приходится в разных ситуациях применять два разных коэффициента: один всегда равен экранному масштабу, а другой - только при запусках с aero; при запусках же без aero обращается в единицу. Всё это выходит довольно запутанно, часто при выборе коэффициента мне приходилось действовать методом тыка. Но в итоге добиился того, что приложение выглядит более-менее одинаково в обоих вариантах запуска.