Люди, пожалуйста, помогите!!!
Как программно создать ярлык? Нашёл в хелпе IShellLink, но не могу въехать, как эта байда работает.Поможите, мы сами не местные!
Здравствуйте Petrowich, Вы писали:
P>Как программно создать ярлык? Нашёл в хелпе IShellLink, но не могу въехать, как эта байда работает.Поможите, мы сами не местные!
У нас справа сверху кнопка "Поиск" есть. Если на нее нажимать, можно найти много интересных вещей. Вот эту, например
http://rsdn.ru/forum/message.asp?mid=1094&onlyАвтор: SIV BLADER
Дата: 11.05.01
Здравствуйте 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);
}
//-----------------------местные!
Здравствуйте Petrowich, Вы писали:
P>Люди, пожалуйста, помогите!!!
P>Как программно создать ярлык? Нашёл в хелпе IShellLink, но не могу въехать, как эта байда работает.Поможите, мы сами не местные!
Ты Научился програмно создавать ярлык? Может подкинешь кусок исходника?
Здравствуйте unk2, Вы писали:
Там ешшо прикрутить IPersistStore надо, если не ошибаюсь

Если сильно надо — завтра поисчу... у меня где-то в книге было

... << RSDN@Home 1.0 alpha 12 РУЛИТ!!!>>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Здравствуйте Hacker_Delphi, Вы писали:
HD>Здравствуйте unk2, Вы писали:
HD>Там ешшо прикрутить IPersistStore надо, если не ошибаюсь
HD>Если сильно надо — завтра поисчу... у меня где-то в книге было
спасибо не надо!
разобрался как сделать ярлык — все ОК
Здравствуйте Hacker_Delphi, Вы писали:
HD>Здравствуйте unk2, Вы писали:
HD>Там ешшо прикрутить IPersistStore надо, если не ошибаюсь
HD>Если сильно надо — завтра поисчу... у меня где-то в книге было
спасибо!
уже разобрался все ОК!
могу разместить гденибудь работающий проект создания ярлыка
Здравствуйте Аноним, Вы писали:
А>могу разместить гденибудь работающий проект создания ярлыка
http://www.rsdn.ru/forum/?group=src
Здравствуйте Odi$$ey, Вы писали:
O$>Здравствуйте Аноним, Вы писали:
А>>могу разместить гденибудь работающий проект создания ярлыка
O$>
http://www.rsdn.ru/forum/?group=src
а там можно разместить например архивом?
чтобы человек просто перекачал проект и запустил на выполнение?
Здравствуйте unk2, Вы писали:
U>Здравствуйте Odi$$ey, Вы писали:
O$>>Здравствуйте Аноним, Вы писали:
А>>>могу разместить гденибудь работающий проект создания ярлыка
O$>>
http://www.rsdn.ru/forum/?group=src
U>а там можно разместить например архивом?
U>чтобы человек просто перекачал проект и запустил на выполнение?
Нет, только исходники... Мой совет — оформите это в виде класса с набором методов, например:
СоздатьЯрлык
УдалитьЯрлык
ПереименоватьЯрлык
ПроверитьЯрлыкНаСущестрование
В общем, где-то так.. И еще — желательно оформить так, чтобы класс можно было юзать как из под VC++, так и из под Builder (то есть без классов String и пр., а стандартными типами С++). И будет вам щастье

И оценки...
Здравствуйте Flamer, Вы писали:
F>Здравствуйте unk2, Вы писали:
U>>Здравствуйте Odi$$ey, Вы писали:
O$>>>Здравствуйте Аноним, Вы писали:
А>>>>могу разместить гденибудь работающий проект создания ярлыка
O$>>>
http://www.rsdn.ru/forum/?group=src
U>>а там можно разместить например архивом?
U>>чтобы человек просто перекачал проект и запустил на выполнение?
F>Нет, только исходники... Мой совет — оформите это в виде класса с набором методов, например:
Ну тогда не имеет смысла размещать исходники потому что я их взял готовые и всего лишь используя визуальные средства Builder С++ 6 сделал более наглядным пример. Потому то и горел желание разместить именно проект.
Здравствуйте 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