![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как создать ярлык в Дельфи 2009? [WinXP]
andreil © (2009-06-05 22:51:00)Есть у меня функция следующего вида:
uses shlobj, ShellAPI, ActiveX;
......
function CreateLinkDesc(const FileName, Arguments, WorkDir, IconFile: String;
IconNumber: integer; LinkName: String;
Description: String): Boolean;
var
SLink : IShellLinkA;
PFile : IPersistFile;
WFileName : WideString;
begin
Result := FALSE;
CoInitialize( nil );
if CoCreateInstance( TGUID( CLSID_ShellLink ), nil, CLSCTX_INPROC_SERVER,
TGUID( IID_IShellLinkA ), SLink ) <> S_OK then Exit;
if SLink.QueryInterface( System.TGUID( IID_IPersistFile ), PFile ) <> S_OK then Exit;
SLink.SetArguments(PAnsiChar(Arguments));
SLink.SetPath(PAnsiChar(FileName));
SLink.SetWorkingDirectory(PAnsiChar(WorkDir));
SLink.SetDescription(PAnsiChar(Description));
SLink.SetIconLocation(PAnsiChar(IconFile),IconNumber);
if not DirectoryExists(ExtractFilePath(LinkName)) then
CreateDir( ExtractFilePath(LinkName) );
WFileName := LinkName;
PFile.Save(PWideChar(LinkName),False);
Result := TRUE;
end;
Код работает правильно, но вот ярлык создается криво из-за несовместимости типов AnsiiChar и WideChar :(
Срочно нужна помощь, а то в программе только это и неработает нормально ;)
Eraser (2009-06-06 18:32:00) [1]
IObject := CreateComObject(CLSID_ShellLink);
ISLink := IObject as IShellLink;
IPFile := IObject as IPersistFile;
ISLink.SetDescription('Cool soft');
ISLink.SetPath(PChar(Application.ExeName));
ISLink.SetArguments(PChar(sArgs));
ISLink.SetShowCmd(SW_SHOW);
IPFile.Save(StringToOleStr(ShortCutPath), True);
andreil (2009-06-05 23:31:00) [2]Вопрос закрыт - уже помогли ;)