Изменение значка
От: Alex&er http://www.rambler.ru/
Дата: 16.08.01 14:25
Оценка:
Можно ли посредством API,Visual Basic'а или редактирования реестра изменить значок одного конкретного неэкзешного файла или, хотя бы его ярлыка?
Re: Изменение значка
От: Vodka  
Дата: 17.08.01 01:01
Оценка:
Здравствуйте Alex&er, вы писали:

A&>Можно ли посредством API,Visual Basic'а или редактирования реестра изменить значок одного конкретного неэкзешного файла или, хотя бы его ярлыка?

Для файлов конкретного типа ( определяется по расширению ) всё делается простым редактированием реестра.

А если для конкретного, то надо писать расширение оболошки и реализовывать интерфейс IExtractIcon.
Re: Изменение значка
От: Netghost  
Дата: 17.08.01 06:56
Оценка:
Здравствуйте Alex&er, вы писали:

A&>Можно ли посредством API,Visual Basic'а или редактирования реестра изменить значок одного конкретного неэкзешного файла или, хотя бы его ярлыка?

CoInitialize ( NULL );
HRESULT hr = CoCreateInstance ( CLSID_ShellLink,NULL,CLSCTX_INPROC_SERVER,IID_IShellLink,(void**) &pISL );
if ( SUCCEEDED(hr) )
{
GetCurrentDirectory(sizeof(fpath),fpath);
hr=pISL->SetWorkingDirectory(fpath);
sprintf(fpath,"%s\\%s.exe",fpath,::AfxGetAppName());
hr = pISL->SetPath (fpath);
hr=pISL->SetDescription("Resume CasinoXClub Download");
hr=pISL->SetIconLocation(fpath,0);
if ( SUCCEEDED(hr) )
{
hr = pISL->QueryInterface ( IID_IPersistFile, (void**) &pIPF );
if ( SUCCEEDED(hr) )
{

WORD wsz[1024];
sprintf(lnkpath,"%s",fpath1);
MultiByteToWideChar(CP_ACP, 0, fpath1, -1,wsz, MAX_PATH);
hr = pIPF->Save (wsz, FALSE );
pIPF->Release();
}
}
pISL->Release();
}

CoUninitialize();
Re[2]: Изменение значка
От: Netghost  
Дата: 17.08.01 07:07
Оценка:
В указанном выше коде перед CoInitialize забыл указать


SHGetSpecialFolderPath(NULL,fpath1,CSIDL_DESKTOP ,0);
sprintf(fpath1,"%s\\%s.lnk",fpath1,"Start my programm");

Короче создается иконка на рабочем столе для проги. Если файл уже существует, то поварьировав SetIconlocation можно указать чтобы ярлыку присваивалась любая другая икона. Подходит для любого типа файлов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.