|
#1
|
||||
|
||||
shell32.dll
Привет !
Есть функция : Код:
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
|
||||
|
||||
Потому что нет такой дллки и ф-ии с таким именем нет.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось 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 — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#6
|
||||
|
||||
Цитата:
Попробовал такое сделать, создать файл desctop.ini с ссылкой на значек. Файл, естественно, создался, но даже после перезагрузки значек у папки не поменялся (у меня windows 8.1 x64) |
#7
|
||||
|
||||
End of client support
потому что ты не умеешь читать!
Пишу программы за еду. __________________ |
#8
|
||||
|
||||
Цитата:
Не понял ?????????? |
#9
|
||||
|
||||
Цитата:
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#10
|
||||
|
||||
Вся проблема в windows 8.1 x64, а точнее в правах программы.
Прикрутил манифест : Цитата:
Создал файл desctop.ini, записал в него: PHP код:
На обычные папки, т.е. созданные мной, прав достаточно, значек меняется. А вот для папки, например Program Files и внутри, прав не достаточно. Есть ли способ еще повысить права, или это предел ? |