Skojarzenie plików i ikony

0

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

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);

1 użytkowników online, w tym zalogowanych: 0, gości: 1