Kiedy utworzę odpowiednie wpisy w rejestrze odpowiedzialne za kojarzenie plków z moim programem, skojarzenie już działa, ale odpowiednie ikony ustalą się dopiero po resecie lub ponownym zalogowaniu. Co trzeba zrobić, żeby ikony były od razu takie jak ustaliłem w rejestrze? Czy to się wiąże z resetem explorera?
0
0
ostatnio na forum pojawił sie taki kod, u mnie nie może zidentyfikować WM_SETTINGCHANGE, nie wiem,byćmoże to DWORD,jeśli ktoś wie to niech napisze
function RefreshIcon:boolean;
var key:HKEY;
typ,sz:dword;
i,code:integer;
buf:array[0..255]of char;
begin
result:=false;
if RegOpenkeyEx(HKEY_CURRENT_USER,'Control Panel\Desktop\WindowMetrics',0,KEY_WRITE or KEY_READ,Key)=ERROR_SUCCESS then begin
typ:=REG_SZ;
sz:=sizeof(buf);
if RegQueryValueEx(key,'Shell Icon Size',nil,@typ,@buf,@sz)<>ERROR_SUCCESS then begin
RegCloseKey(Key);
exit;
end;
val(buf,i,code);
if code<>0 then begin
RegCloseKey(Key);
exit;
end;
inc(i);
fillchar(buf,sizeof(buf),0);
str(i,buf);
sz:=length(buf);
if RegSetValueEx(key,'Shell Icon Size',0,typ,@buf,sz)<>ERROR_SUCCESS then begin
RegCloseKey(Key);
exit;
end;
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0);
dec(i);
fillchar(buf,sizeof(buf),0);
str(i,buf);
sz:=length(buf);
RegSetValueEx(key,'Shell Icon Size',0,typ,@buf,sz);
RegCloseKey(Key);
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0);
result:=true;
end;
end;
0
uses ShlObj, ..... ;
SHChangeNotify(SHCNE_ASSOCCHANGED, 0, nil, nil);