![]() |
|
|
#1
|
||||
|
||||
|
Привет !
Есть функция : Код:
function SHGetSetFolderCustomSettings(pfcs: PSHFOLDERCUSTOMSETTINGS; pszPath: PWideChar; dwReadWrite: DWORD): HRESULT; stdcall; external 'shell32.dll'; Применяю ее для смены значка у папки. В 32-bit работает прекрасно, но в 64-bit, не работает. Усть ли функция: Код:
function SHGetSetFolderCustomSettings64(pfcs: PSHFOLDERCUSTOMSETTINGS; pszPath: PWideChar; dwReadWrite: DWORD): HRESULT; stdcall; external 'shell64.dll'; |
|
#2
|
||||
|
||||
|
Потому что нет такой дллки и ф-ии с таким именем нет.
Последний раз редактировалось M.A.D.M.A.N., 10.06.2015 в 17:00. |
|
#3
|
||||
|
||||
|
я бы не стал ее использовать
Цитата:
|
|
#4
|
||||
|
||||
|
Делаю следующее:
Код:
.............
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, программа запускается, но действий не происходит, значек у папки не меняются. Вот в этом проблемма. |
|
#5
|
||||
|
||||
|
Иконку можно заменить подложив в папу desctop.ini
Код:
[.ShellClassInfo] IconResource=C:\Windows\system32\SHELL32.dll,11 |
|
#6
|
||||
|
||||
|
Цитата:
Попробовал такое сделать, создать файл desctop.ini с ссылкой на значек. Файл, естественно, создался, но даже после перезагрузки значек у папки не поменялся (у меня windows 8.1 x64) |
|
#7
|
||||
|
||||
|
потому что ты не умеешь читать!
|
|
#8
|
||||
|
||||
|
Цитата:
Не понял ?????????? |
|
#9
|
||||
|
||||
|
Цитата:
|
|
#10
|
||||
|
||||
|
Вся проблема в windows 8.1 x64, а точнее в правах программы.
Прикрутил манифест : Цитата:
Создал файл desctop.ini, записал в него: PHP код:
На обычные папки, т.е. созданные мной, прав достаточно, значек меняется. А вот для папки, например Program Files и внутри, прав не достаточно. Есть ли способ еще повысить права, или это предел ? |