IShellLink - создать ярлык
От: Petrowich Украина  
Дата: 30.11.01 08:18
Оценка:
Люди, пожалуйста, помогите!!!
Как программно создать ярлык? Нашёл в хелпе IShellLink, но не могу въехать, как эта байда работает.Поможите, мы сами не местные!
Petrowich
Re: IShellLink - создать ярлык
От: Alex Fedotov США  
Дата: 30.11.01 08:22
Оценка:
Здравствуйте Petrowich, Вы писали:

P>Как программно создать ярлык? Нашёл в хелпе IShellLink, но не могу въехать, как эта байда работает.Поможите, мы сами не местные!


У нас справа сверху кнопка "Поиск" есть. Если на нее нажимать, можно найти много интересных вещей. Вот эту, например

http://rsdn.ru/forum/message.asp?mid=1094&only
Автор: SIV BLADER
Дата: 11.05.01
-- Alex Fedotov
Re: IShellLink - создать ярлык
От: IgoX Россия  
Дата: 01.12.01 13:37
Оценка:
Здравствуйте Petrowich, Вы писали:

первая кнопка создает а вторая удаляет.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
HRESULT hres;
IShellLink *psl;
IPersistFile *ppf;

wchar_t wsz[MAX_PATH];
char StartPath[MAX_PATH];
LPITEMIDLIST pidl;
AnsiString s=Application->ExeName;
while(1)
{
s=s.SubString(s.Pos("\\")+1,s.Length());
if(s.Pos("\\") == 0)
{
int i=0;
i=s.Length()+1;
s=Application->ExeName.SubString(1,Application->ExeName.Length()-i);
break;
}
}

SHGetSpecialFolderLocation(Handle, CSIDL_DESKTOP, &pidl); //CSIDL_STARTUP, CSIDL_STARTMENU, CSIDL_PROGRAMS
SHGetPathFromIDList(pidl, StartPath);

CoInitialize(NULL);

hres = CoCreateInstance(CLSID_ShellLink, NULL,
CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&psl);
if (SUCCEEDED(hres))
{
psl->SetPath(Application->ExeName.c_str());
psl->SetWorkingDirectory(s.c_str());
psl->SetDescription("Иконка");

hres = psl->QueryInterface(IID_IPersistFile, (void**)&ppf);

if (SUCCEEDED(hres))
{
MultiByteToWideChar(CP_ACP, 0, strcat(StartPath, "\\Иконка.lnk"), -1,
wsz, MAX_PATH);
hres = ppf->Save(wsz, true);
ppf->Release();
}

psl->Release();

}

CoUninitialize();

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
TCHAR buf[MAX_PATH];
LPITEMIDLIST pidl;

SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &pidl);
SHGetPathFromIDList(pidl, buf);
lstrcat(buf,"\\");
lstrcat(buf,"Иконка.lnk");
DeleteFile(buf);

}
//-----------------------местные!
Re: IShellLink - создать ярлык
От: unk2 Россия www.ktk.ru/~lexab
Дата: 07.11.02 17:34
Оценка:
Здравствуйте Petrowich, Вы писали:

P>Люди, пожалуйста, помогите!!!

P>Как программно создать ярлык? Нашёл в хелпе IShellLink, но не могу въехать, как эта байда работает.Поможите, мы сами не местные!

Ты Научился програмно создавать ярлык? Может подкинешь кусок исходника?
Re[2]: IShellLink - создать ярлык
От: Hacker_Delphi Россия  
Дата: 07.11.02 22:23
Оценка:
Здравствуйте unk2, Вы писали:
Там ешшо прикрутить IPersistStore надо, если не ошибаюсь
Если сильно надо — завтра поисчу... у меня где-то в книге было
... << RSDN@Home 1.0 alpha 12 РУЛИТ!!!>>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re[3]: IShellLink - создать ярлык
От: Аноним  
Дата: 10.11.02 04:34
Оценка:
Здравствуйте Hacker_Delphi, Вы писали:

HD>Здравствуйте unk2, Вы писали:

HD>Там ешшо прикрутить IPersistStore надо, если не ошибаюсь
HD>Если сильно надо — завтра поисчу... у меня где-то в книге было

спасибо не надо!
разобрался как сделать ярлык — все ОК
Re[3]: IShellLink - создать ярлык
От: Аноним  
Дата: 10.11.02 04:57
Оценка:
Здравствуйте Hacker_Delphi, Вы писали:

HD>Здравствуйте unk2, Вы писали:

HD>Там ешшо прикрутить IPersistStore надо, если не ошибаюсь
HD>Если сильно надо — завтра поисчу... у меня где-то в книге было

спасибо!
уже разобрался все ОК!
могу разместить гденибудь работающий проект создания ярлыка
Re[4]: IShellLink - создать ярлык
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 10.11.02 05:59
Оценка:
Здравствуйте Аноним, Вы писали:

А>могу разместить гденибудь работающий проект создания ярлыка


http://www.rsdn.ru/forum/?group=src
Re[5]: IShellLink - создать ярлык
От: unk2 Россия www.ktk.ru/~lexab
Дата: 10.11.02 07:44
Оценка:
Здравствуйте Odi$$ey, Вы писали:

O$>Здравствуйте Аноним, Вы писали:

А>>могу разместить гденибудь работающий проект создания ярлыка


O$>http://www.rsdn.ru/forum/?group=src

а там можно разместить например архивом?
чтобы человек просто перекачал проект и запустил на выполнение?
Re[6]: IShellLink - создать ярлык
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 10.11.02 08:17
Оценка:
Здравствуйте unk2, Вы писали:

U>Здравствуйте Odi$$ey, Вы писали:


O$>>Здравствуйте Аноним, Вы писали:

А>>>могу разместить гденибудь работающий проект создания ярлыка


O$>>http://www.rsdn.ru/forum/?group=src

U>а там можно разместить например архивом?

U>чтобы человек просто перекачал проект и запустил на выполнение?

Нет, только исходники... Мой совет — оформите это в виде класса с набором методов, например:

СоздатьЯрлык
УдалитьЯрлык
ПереименоватьЯрлык
ПроверитьЯрлыкНаСущестрование


В общем, где-то так.. И еще — желательно оформить так, чтобы класс можно было юзать как из под VC++, так и из под Builder (то есть без классов String и пр., а стандартными типами С++). И будет вам щастье И оценки...
Re[7]: IShellLink - создать ярлык
От: Аноним  
Дата: 11.11.02 02:34
Оценка:
Здравствуйте Flamer, Вы писали:

F>Здравствуйте unk2, Вы писали:


U>>Здравствуйте Odi$$ey, Вы писали:


O$>>>Здравствуйте Аноним, Вы писали:

А>>>>могу разместить гденибудь работающий проект создания ярлыка


O$>>>http://www.rsdn.ru/forum/?group=src

U>>а там можно разместить например архивом?

U>>чтобы человек просто перекачал проект и запустил на выполнение?

F>Нет, только исходники... Мой совет — оформите это в виде класса с набором методов, например:


Ну тогда не имеет смысла размещать исходники потому что я их взял готовые и всего лишь используя визуальные средства Builder С++ 6 сделал более наглядным пример. Потому то и горел желание разместить именно проект.
Re[7]: IShellLink - создать ярлык
От: Аноним  
Дата: 11.11.02 07:02
Оценка:
Здравствуйте Flamer, Вы писали:

F>Здравствуйте unk2, Вы писали:


U>>Здравствуйте Odi$$ey, Вы писали:


O$>>>Здравствуйте Аноним, Вы писали:

А>>>>могу разместить гденибудь работающий проект создания ярлыка


O$>>>http://www.rsdn.ru/forum/?group=src

U>>а там можно разместить например архивом?

U>>чтобы человек просто перекачал проект и запустил на выполнение?

F>Нет, только исходники... Мой совет — оформите это в виде класса с набором методов, например:


исходный текст проекта для Builder C++ 6.0 можно перекачать сдесь
http://www.ktk.ru/~lexab/SourceCode/CreateLink.zip
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.