![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получение размера иконок [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)...