Делаю следующее:
Код:
.............
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, программа запускается, но действий не происходит, значек у папки не меняются.
Вот в этом проблемма.