Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Получение размера иконок [D6, WinXP]


webpauk ©   (2007-05-16 17:41:00) 

function SystemIconSize: Integer;
Var
 Reg: TRegistry;
begin
 Result:=32;

 try
   Reg:=TRegistry.Create;
   Reg.RootKey:=HKEY_CURRENT_USER;
   if Reg.OpenKey('Control Panel\Desktop\WindowMetrics',False) then Result:=StrToInt(Reg.ReadString('Shell Icon Size'));
 finally
   Reg.Free
 end;
end;


вот так можно получить размер иконок, отображаемых Explorer-ом. Проблема в том, что User-а не имеют доступа к реестру (нет admin-прав) и прога глючит.
Можно исчо как-то узнать размер иконки?


webpauk   (2007-05-16 18:16:00) [1]

SystemParametersInfo(SPI_GETICONMETRICS,

SPI_ GETICONMETRICS
Только для Windows 95. Позволяет узнать метрики для иконок (структуре TIconMetrics)


webpauk   (2007-05-16 18:09:00) [2]


> к тому же есть и штатные функции GetSystemMetrics, SystemParametersInfo


меняю в реестре значение Shell Icon Size - на любое, обновляюсь:

 sendMessage(HWND_BROADCAST,WM_WININICHANGE,0,0);
 ShowMessage(Inttostr(GetSystemMetrics(SM_CXICON)));

результат всегда 32!


clickmaker   (2007-05-16 17:51:00) [3]


> что User-а не имеют доступа к реестру (нет admin-прав

а зачем же туда ломиться с полным доступом?
TRegistry.Create(KEY_READ) недостаточно разве?

к тому же есть и штатные функции GetSystemMetrics, SystemParametersInfo


webpauk   (2007-05-16 17:43:00) [4]

поправочка: if Reg.OpenKey('Control Panel\Desktop\WindowMetrics\Shell Icon Size',False)...


Наверх

Титульная страница Поиск, карта сайта Написать письмо