Форум по Delphi программированию

 



Вернуться   Форум по Delphi программированию > Все о Delphi > Delphi x64
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.06.2015, 13:27
Аватар для volod3000
volod3000 volod3000 вне форума
Новичок
 
Регистрация: 25.12.2008
Сообщения: 71
Репутация: 114
По умолчанию 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  
Старый 10.06.2015, 16:38
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,503
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Потому что нет такой дллки и ф-ии с таким именем нет.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 10.06.2015 в 17:00.
Ответить с цитированием
  #3  
Старый 10.06.2015, 17:52
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

я бы не стал ее использовать
Цитата:
Requirements
Minimum supported client Windows XP [desktop apps only]
Minimum supported server Windows Server 2003 [desktop apps only]
End of client support Windows XP with SP2
End of server support Windows Server 2003
Header Shlobj.h
Library Shell32.lib
DLL Shell32.dll (version 6.0 or later)
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #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, программа запускается, но действий не происходит, значек у папки не меняются.
Вот в этом проблемма.
Ответить с цитированием
  #5  
Старый 11.06.2015, 13:37
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,503
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Иконку можно заменить подложив в папу desctop.ini
Код:
[.ShellClassInfo]
IconResource=C:\Windows\system32\SHELL32.dll,11
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #6  
Старый 11.06.2015, 18:44
Аватар для volod3000
volod3000 volod3000 вне форума
Новичок
 
Регистрация: 25.12.2008
Сообщения: 71
Репутация: 114
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Иконку можно заменить подложив в папу desctop.ini
Код:
[.ShellClassInfo]
IconResource=C:\Windows\system32\SHELL32.dll,11

Попробовал такое сделать, создать файл desctop.ini с
ссылкой на значек. Файл, естественно, создался, но даже после
перезагрузки значек у папки не поменялся
(у меня windows 8.1 x64)
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2021

ВКонтакте   Facebook   Twitter