|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.04.2011, 18:48 | #1 |
Пользователь
Регистрация: 13.09.2010
Сообщений: 65
|
Как извлечь дескриптор значка функцией SHExtractIconsW
Например нужно извлечь дескриптор значка из указанного исполняемого файла
или как в данном примере из динамически подключаемой библиотеки (DLL) (для последующего отображения в окне программы) Для примера обьявим переменные FileName db "C:\WINDOWS\system32\shell32.dl l",0 Index dd 130 hInstance dd ? Mas1 dd 0 Mas2 dd 0 Можно извлечь дескриптор значка с помощью функции invoke ExtractIcon,hInstance,addr FileName,Index На выходе дескриптор значка будет в регистре EAX Но в окне программы эта иконка будет отображатся только с размерами 32х32 Можно извлечь дескриптор значка с помощью функции invoke ExtractIconEx,addr FileName,Index,addr Mas1,addr Mas2,1 На выходе дескриптор значка будет в указателях (Mas1 и Mas2) Если взять дескриптор значка из указателя Mas1 То в окне программы эта иконка будет отображатся только с размерами 32х32 Если взять дескриптор значка из указателя Mas2 То в окне программы эта иконка будет отображатся только с размерами 16х16 Короче отображение иконки в окне программы с произвольными размерами например (48х48)не получится Но есть ещё функция которая позволяет это сделать Но как я её не крутил извлечь дескриптор значка мне так и не удалось invoke SHExtractIconsW,addr FileName,Index,48,48,addr Mas1,addr Mas2,1,0 На MSDN посмотрел эту функцию И примерный перевод (хотя не исключаю что что то напутал) 1 - параметр название файла (где находится значок) 2 - индекс значка 3 и 4 - размеры которые ты хочешь 5 - указатель на массив хендлов 6 - указатель идентификатора ресурса извлеченного символа 7 - сколько иконок ты хочешь извлечь 8 - какой то флаг (вроде можно ноль хотя могу и ошибатся) Вроде бы дескриптор значка должен быть или в 5 или в 6 параметре Но там всегда ноль навсякий случай посмотрел что на выходе в регистре EAX но там какоето значение есть но это вроде бы не дескриптор Хотя может быть я и ошибаюсь или что то напутал Не поможете разобратся с этой функцией |
10.04.2011, 22:20 | #2 |
Пользователь
Регистрация: 13.09.2010
Сообщений: 65
|
Всё получилось .
Надо было имя файла в кодировке ANSI перегнать в unicode-строку. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Размер шрифта и самого значка не совпадают | Foxy-Vixen | Помощь студентам | 0 | 25.09.2010 21:16 |
Как извлечь DIB из Clipboard? | vag2005 | Общие вопросы .NET | 0 | 02.04.2010 22:41 |
Как проверить дескриптор (указатель) на правильность? | TwiX | Общие вопросы Delphi | 11 | 13.02.2010 22:10 |
как получить дескриптор приложения в C#? | fiatik | Общие вопросы .NET | 1 | 08.11.2008 08:18 |