Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что не так, ExtractAssociatedIcon 
:(
    Опции темы
devmstr
  Дата 13.9.2004, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: 2
Всего: 11



Что не так
procedure TForm1.Button1Click(Sender: TObject);
Var
d:HWND;
w:word;
begin
d:=ExtractAssociatedIcon(HInstance,pchar('c:\1.txt'),w);
Image1.Canvas.Handle:=d;
end;

Как правильно вывести иконку
Добавлено @ 15:39
Может вообще нужно как-то по другому делать? sample.gif
Помогите плиzz


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
dvamaster
Дата 13.9.2004, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 559
Регистрация: 30.6.2004
Где: Россия : Курган

Репутация: 3
Всего: 10





--------------------
Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/

Что же я сделал не так? /Король Лир/

Я делаю это для твоего же блага! /Любой родитель и палач/

PKUNZIP.ZIP /неизвестный/
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 13.9.2004, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: нет
Всего: 232



Модератор: Перемещено из раздела "С++"


--------------------
user posted image
PM MAIL WWW   Вверх
devmstr
Дата 13.9.2004, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: 2
Всего: 11



Извиняюсь за ошибку в выборе раздела sad.gif .

А насчет вопроса:
Не работает. Причем как я сейчас понял, Extractassociatedicon возращает 0. Как я понимаю это не есть хорошо, так как на Handle это совсем не похоже.
То что файл 'c:\1.txt' существует это стобудово. Что еще не так Я НЕ МОГУ ПОНЯТЬ!!!! exclamation.gif butbut.gif exclamation.gif


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
devmstr
Дата 13.9.2004, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: 2
Всего: 11



Не ну Народ, яж правильно функцию использую. MSDN:

The ExtractAssociatedIcon function returns a handle to an indexed icon found in a file or an icon found in an associated executable file.




--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
Illusion Dolphin
Дата 13.9.2004, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Цитата
Image1.Canvas.Handle:=d;

Это не совсем верно...
Надо где-то так:
Код

procedure TForm1.Button1Click(Sender: TObject);
Var
d:HWND;
w:word;
ico : TIcon;
begin
ico:=TIcon.create;
if fileexists('c:\1.txt') then
d:=ExtractAssociatedIcon(HInstance,pchar('c:\1.txt'),w);
ico.handle:=d;

Image1.Canvas.draw(0,0,ico);
{
или же:
Image1.picture.bitmap:=Tbitmap.create;
Image1.picture.bitmap.width:=ico.width;
Image1.picture.bitmap.height:=ico.height;
Image1.picture.bitmap.pixelformat:=pf24bit;
Image1.picture.bitmap.canvas.draw(0,0,ico);
image1.refresh;
}
{
или же:
Image1.picture.icon:=Ticon.create;
Image1.picture.icon.assign(ico);
image1.refresh;
}
ico.free;
end;


Это сообщение отредактировал(а) Illusion Dolphin - 13.9.2004, 18:53


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Alex
Дата 14.9.2004, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Код
function GetAssociatedFileIcon(path: String; SmallIcon: Boolean = True): HICON;
// Функция возвращает хендл иконки ассоциированной с файлом или папкой
var
 FileInfo: TSHFileInfo;
 Flags: Integer;
begin
 Flags:= SHGFI_ICON;
 if SmallIcon then Flags:= Flags or SHGFI_SMALLICON;
 SHGetFileInfo(PChar(path), 0, FileInfo, SizeOf(TSHFileInfo), Flags);
 Result := FileInfo.hIcon;
end;


Пример использования:
Код
Image1.Picture.Icon.Handle := GetAssociatedFileIcon('c:\1.txt');


Это сообщение отредактировал(а) alex-co - 14.9.2004, 08:19


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
devmstr
Дата 15.9.2004, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: 2
Всего: 11



громадное тебе спасибо alex-co.
Классный лаконичный рабочий код. Я как-то про эту функцию забыл smile.gif

Я правда до етого извратился используя реестр, но твой способ намного лучше.

Так же спасибо всем участникам, которые обратили внимание на моэ проблему!
Остоется до сих пор открытый вопрос! Так почему всетаки не работает ExtractAssociatedIcon.
Почему она возвращает 0.!!!!!!!!!!!!!!!!!!!!! qstn.gif qstn.gif qstn.gif qstn.gif thumbs-up.gif omg.gif


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
Alex
Дата 15.9.2004, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Код
function ExtractAssociatedIcon_ (FileName :String) :HICON;
var
 i: Word;
 b: array[0..MAX_PATH] of char;
begin
 i := 0;
 Result:= ExtractAssociatedIcon(Application.Handle, StrLCopy(b,PChar(FileName),SizeOf(b)-1),i);
end;


Если хочешь подробностей, то зайди на http://forum.vingrad.ru/index.php?showtopi...tassociatedicon


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
devmstr
Дата 17.9.2004, 06:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: 2
Всего: 11



Еще раз спасибо! Полностью работающий пример! Еще и ссылочка на "небольшую статью" по этой проблеме. Только правдо не понятно почему когда даешь ссылку даже на правильный путь и всё равно не показывает иконку(мой первый вариант, Ваш вариант естественно работает), но правда это меня уже не волнует, влюбом случае приведенный мною код не правильным.

Еще один маленький вопрос ламера:
Application.Handle и hInstance -это одно и тоже или нет?


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
Alex
Дата 17.9.2004, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Цитата(magician @ 17.9.2004, 07:43)
Application.Handle и hInstance -это одно и тоже или нет?

Нет это не одно и тоже
Application.Handle - Свойство содержит дескриптор программы, который используется операционной системой Windows. (хендл главного окна приложения)
hInstance - идентификатоp экземпляpа модуля процесса. (хендл процесса)


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
devmstr
Дата 18.9.2004, 06:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: 2
Всего: 11



Спасибо.
Тогда если позволите еще один вопрос, а почему вы используете Application.Handle, а ведь в MSDN
hInst
[in] Specifies the instance of the application calling the function.

Или это причуда Delphi(hInstance в Delphi, это не то то я думаю).


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
Alex
Дата 18.9.2004, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Цитата(magician @ 18.9.2004, 07:43)
Specifies the instance of the application calling the function.

Хендл приложения вызвавшего данную функцию.

Вот поэтому и используется Application.Handle


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
devmstr
Дата 18.9.2004, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: 2
Всего: 11



Спасибо!


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0588 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.