Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ExtractAssociatedIcon под XP


_Ed_ ©   (2002-12-04 06:44:00) 

Уважаемые Мастера!
Кто нибудь может подсказать, почему API-фукция
ExtractAssociatedIcon прекрасно работает под Win98,
но под XP выдаёт нулевой хендл?
______________________________________________________
Доп. сведения: икону запускающего exe-шника извлекает,
всё остальное - нет... :((

Заранее благодарен, Сердюк Э.С.


Song   (2002-12-04 14:28:00) [1]

i должно быть не меньше единицы


Song   (2002-12-04 14:26:00) [2]

Тебе было в падлу моё мыло из ответа вытащить?!!


_Ed_   (2002-12-04 14:22:00) [3]

Song <song@kmtn.ru>:

> когда говорят "Ошибка в 17-ой строке", имеют ввиду "покажи
> код. Без кода
> невозможно тебе помочь". Эта идиома ещё из фидо

прости ламера :)

привожу код (по памяти, т.к. пишу с работы)


... SomeBtn.OnClick(Sender : TObject)
var icon : TIcon;
i : integer;
begin
icon := TIcon.Create;
i := 0; // пробовал и 1 - d 98 c i:=0 работает
// файл anyfile существует и в 98 из него икона тянется!
icon.Handle := ExtractAssociatedIcon(
HInstance,
PChar("c:\AnyPath\anyfile.anyextention"), i );
// не помню точно порядок следования параметров в
// DrawIcon, но кажется так:
DrawIcon (MainForm.Canvas.Handle, 10, 10, icon.Handle);
icon.Free;
end;


так вот, под XP это всё работает, только если в качестве файла передать PChar(Application.Name);

е ещё: я протрахался пол ночи, пробовал разные варианты. Понимая что filename - это указатель и строка может измениться после вызова ExtractAssociatedIcon, я резервировал буфер и передавал указатель на него, но всё это фигня, т.к. этот код работает под 98...

Может у меня с тачкой или с делфями глюк? просто это очень странно. Буду очень благодарен за посильную помощь!

С уважением, Сердюк Э.С.


_Ed_   (2002-12-04 12:58:00) [4]

извиняюсь за назойливость, но 17-я строка чего, ShellAPI.pas?
В ней объявление начала интерфейса:

interface

или дело в shell32.dll, где эта функция зашита?
Пожалуйста, можно подробнее
(что бы можно было исправить глюк)...


Song   (2002-12-04 08:28:00) [5]

Ошибка в 17-ой строке.


Наверх

Титульная страница Поиск, карта сайта Написать письмо