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

Delphi Sources



Вернуться   Форум по 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,505
Версия 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,505
Версия 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)
Ответить с цитированием
  #7  
Старый 12.06.2015, 17:32
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию End of client support

потому что ты не умеешь читать!
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #8  
Старый 13.06.2015, 09:23
Аватар для volod3000
volod3000 volod3000 вне форума
Новичок
 
Регистрация: 25.12.2008
Сообщения: 71
Репутация: 114
По умолчанию

Цитата:
Сообщение от NumLock
потому что ты не умеешь читать!

Не понял ??????????
Ответить с цитированием
  #9  
Старый 13.06.2015, 09:40
Аватар для 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,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от volod3000
Не понял ??????????
http://www.delphisources.ru/forum/sh...89&postcount=3
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


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

Вся проблема в windows 8.1 x64, а точнее в правах программы.
Прикрутил манифест :

Цитата:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"/>
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!--The ID below indicates application support for Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!--The ID below indicates application support for Windows 8,1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
</application>
</compatibility>
</assembly>


Создал файл desctop.ini,
записал в него:

PHP код:
[.ShellClassInfo]
 
IconResource=C:\Windows\system32\SHELL32.dll,11 

На обычные папки, т.е. созданные мной, прав достаточно, значек меняется.
А вот для папки, например Program Files и внутри, прав не достаточно.

Есть ли способ еще повысить права, или это предел ?
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter