Программное создание ярлыков.
Добавлено: 13 фев 2011, 20:50
Всем доброго времени суток! Я новичок в программировании, поэтому прошу Вашей помощи. Есть задача: Создать ярлык на рабочем столе ( не ярлык интернета ).
Перерыл множесво сайтов, но ничего толкового не нашел, код не как нехочет работать, наверно это из-за недостатка опыта.
Есть данный код:
При компиляции выдает ошибки:
Код взят из этой статьи.
Работаю в Code::Blocks 10.05, в Dev C++ также не работает.
Помогите пожалуйста разобраться.
Заранее благодарен. 
Перерыл множесво сайтов, но ничего толкового не нашел, код не как нехочет работать, наверно это из-за недостатка опыта.
Есть данный код:
Код: Выделить всё
#include <shlobj.h>
#include <string.h>
HRESULT CreateLink (LPCSTR lpszPathObj, LPCSTR lpszPathLink,
LPCSTR lpszDesc)
{
HRESULT hres;
IShellLink *psl;
// Получить указатель на интерфейс IShellLink
hres = CoCreateInstance (CLSID_ShellLink, NULL,
CLSCTX_INPROC_SERVER,
IID_IShellLink, (LPVOID *) &psl);
if (SUCCEEDED (hres))
{
IPersistFile *ppf;
// Установить путь к ярлыку и добавить описание
psl->SetPath (lpszPathObj);
psl->SetDescription (lpszDesc);
// Преобразовать IShellLink в IPersistFile для сохранения ярлыка
hres = psl->QueryInterface (IID_IPersistFile, (LPVOID *) &ppf);
if (SUCCEEDED (hres))
{
WCHAR wsz[MAX_PATH];
// Преобразовать строку в Unicode
MultiByteToWideChar (CP_ACP, 0, lpszPathLink, -1, wsz, MAX_PATH);
// Сохранить ярлык вызовом IPersistFile::Save.
hres = ppf->Save (wsz, TRUE);
ppf->Release ();
}
psl->Release ();
}
return hres;
}
int main (int argc, char *argv[])
{
LPITEMIDLIST P;
char szLink[512] = "";
// Инициализация библиотеки COM
CoInitialize (NULL);
// Получить путь к Рабочему столу
if (SHGetSpecialFolderLocation (NULL, CSIDL_DESKTOP, &P) == NOERROR)
{
// Преобразовать путь к строке
SHGetPathFromIDList (P, szLink);
strcat (szLink, "\\Program.lnk");
// Создать ярлык
CreateLink (argv[0], szLink, "Link");
}
// Закрытие библиотеки COM
CoUninitialize ();
return 0;
}
Код: Выделить всё
C:\Users\admin\Documents\link.o:link.cpp|| undefined reference to `CoCreateInstance@20'|
C:\Users\admin\Documents\link.o:link.cpp|| undefined reference to `IID_IPersistFile'|
C:\Users\admin\Documents\link.o:link.cpp|| undefined reference to `CoInitialize@4'|
C:\Users\admin\Documents\link.o:link.cpp|| undefined reference to `CoUninitialize@0'|
||=== Build finished: 4 errors, 0 warnings ===|
Работаю в Code::Blocks 10.05, в Dev C++ также не работает.
Помогите пожалуйста разобраться.

