Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2010, 11:25   #1
Ant_on
 
Регистрация: 29.01.2010
Сообщений: 4
По умолчанию Программно создать ярлык

Нашел исходник создания ярлыка, но он выдает ошибку. Код рабочий 100%. Сам запускал лично, потом при повторной компиляции опять ошибка вылезла. Как исправить.

Вот код проги:
Код:
#include <vcl.h>
#include <shlobj.h> // Вот из-за этого подключения и идёт ошибка
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

HRESULT CreateLink(LPCSTR lpszPathObj,
    LPCSTR lpszPathLink, LPCSTR lpszDesc)
{
    void *pvReserved=NULL;
    HRESULT rez=CoInitialize(pvReserved);
    if(rez!=S_OK) return false;

    HRESULT hres;
    IShellLink* psl;

    // Get a pointer to the IShellLink interface.
    hres = CoCreateInstance(CLSID_ShellLink, NULL,
        CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID *) &psl);
    if (SUCCEEDED(hres)) {
       IPersistFile* ppf;

        // Set the path to the shortcut target and add the
        // description.
        psl->SetPath(lpszPathObj);
        psl->SetDescription(lpszDesc);

       // Query IShellLink for the IPersistFile interface for saving the
       // shortcut in persistent storage.
       hres = psl->QueryInterface(IID_IPersistFile,(void**)&ppf);

        if (SUCCEEDED(hres))
         {
            WCHAR wsz[MAX_PATH];

            // Ensure that the string is Unicode.
            MultiByteToWideChar(CP_ACP, 0, lpszPathLink, -1,
                wsz, MAX_PATH);

            // Save the link by calling IPersistFile::Save.
            hres = ppf->Save(wsz, TRUE);
            ppf->Release();
        }
        psl->Release();
    }
    return hres;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{

  String lpszPathObj="c:\\1.exe",
         lpszPathLink="c:\\11.lnk",
         lpszDesc="My Link";
  int rez=CreateLink(lpszPathObj.c_str(),
             lpszPathLink.c_str(),
             lpszDesc.c_str());
  if(rez==0)Button1->Caption="TRUE";
  else Button1->Caption="FALSE";
}
//---------------------------------------------------------------------------
Вот что пишет Билдер об ошибке:
Код:
[C++ Error] shobjidl.h(2193): E2238 Multiple declaration for 'FOLDERSETTINGS'
[C++ Error] shobjidl.h(8095): E2238 Multiple declaration for 'DESKBANDINFO'
[C++ Error] shlobj.h(1422): E2238 Multiple declaration for 'FVSHOWINFO'
[C++ Error] shlobj.h(3457): E2238 Multiple declaration for 'SHELLFLAGSTATE'
Модератор: Код нужно заключать в теги code!!!

Последний раз редактировалось Carbon; 29.01.2010 в 20:07.
Ant_on вне форума Ответить с цитированием
Старый 29.01.2010, 19:42   #2
--=SaNitinDG=-
Пользователь
 
Регистрация: 14.01.2010
Сообщений: 61
По умолчанию

Попробуй написать

Цитата:
#include <shlobj.h>
#define NO_WIN32_LEAN_AND_MEAN
//надо вписать в файл проекта до
#include <vcl.h>
Опыт не пропьешь если он есть=)))
--=SaNitinDG=- вне форума Ответить с цитированием
Старый 30.01.2010, 14:17   #3
Ant_on
 
Регистрация: 29.01.2010
Сообщений: 4
По умолчанию

Спасибо, работает
Ant_on вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать ярлык => выбор файла => Открыть файл как папку??? Alex Cones Windows 6 05.10.2009 10:47
Программно перетащить ярлык на рабочем столе Windows Обледеневший Общие вопросы C/C++ 9 16.09.2009 18:51
Как создать ярлык на сайт в интернете Levhik Общие вопросы Delphi 4 03.03.2009 10:56
Помогите создать ярлык. Kashp Общие вопросы Delphi 8 11.08.2007 20:55