Тема: shell32.dll
Показать сообщение отдельно
  #4  
Старый 11.06.2015, 13:33
Аватар для volod3000
volod3000 volod3000 вне форума
Новичок
 
Регистрация: 25.12.2008
Сообщения: 71
Репутация: 114
По умолчанию

Делаю следующее:

Код:
.............
   function SHGetSetFolderCustomSettings(pfcs: PSHFOLDERCUSTOMSETTINGS;
  pszPath: PWideChar; dwReadWrite: DWORD): HRESULT; stdcall; external 'shell32.dll';


function SetFolderIcon(Folder, IconFile: WideString; IconIndex: Integer): HRESULT;
var
  fcs: SHFolderCustomSettings;
begin
  FillChar(fcs, SizeOf(fcs), 0);
  fcs.dwSize := SizeOf(fcs);
  fcs.dwMask := FCSM_ICONFILE;
  fcs.pszIconFile := PWideChar(IconFile);
  fcs.cchIconFile := 0;
  fcs.iIconIndex := IconIndex;
  if IsWow64 then begin
  Result := SHGetSetFolderCustomSettings(@fcs, PWideChar(Folder), FCS_FORCEWRITE);
  end else begin
  Result := SHGetSetFolderCustomSettings(@fcs, PWideChar(Folder), FCS_FORCEWRITE);
  end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
   if SetFolderIcon('C:\Users\volod3000\Desktop\Разработка\pro\2',
                   'C:\Users\volod3000\Desktop\Разработка\pro\2.ico', 0) = S_OK then begin
         Label1.caption:= 'Успешная смена иконки';
   end;
end;

........

Так вот, когда компилирую в 32-bit windows, все отлично, значек у папки меняются.
А вот когда компилирую в 64-bit windows, программа запускается, но действий не происходит, значек у папки не меняются.
Вот в этом проблемма.
Ответить с цитированием