会员: 密码:  免费注册 | 忘记密码 | 会员登录 网页功能: 加入收藏 设为首页 网站搜索  
技术文档 > Delphi
创建桌面链接
发表日期:2003-04-07 00:00:00作者: 出处:  

size        : 1409

uploaded_on     : Wed Oct 7 00:00:00 1998

modified_on     : Wed Dec 8 14:03:13 1999

title        : Desktop link

org_filename    : DesktopLink.txt

author       : Mario Mueller

authoremail     : mario.mueller@online.de

description     : How to create a link on the desktop

keywords      :

tested       : not tested yet

submitted_by    : The CKB Crew

submitted_by_email : ckb@netalive.org

uploaded_by     : nobody

modified_by     : nobody

owner        : nobody

lang        : plain

file-type      : text/plain

category      : delphi-system32bit

__END_OF_HEADER__

> How can I create a link on the desktop to my program (application.exename)?

uses

 ShlObj, ActiveX, ComObj;

procedure TForm1.Button1Click(Sender: TObject);

var

 aObject  : IUnknown;

 aSLink   : IShellLink;

 aPFile   : IPersistFile;

 sDirectory : string;

 wsFileName : WideString;

 szWinDir  : array[0..29] of char;

begin

 FillChar(szWinDir, SizeOf(szWinDir), #0);

 GetWindowsDirectory(szWinDir, SizeOf(szWinDir));

 aObject := CreateComObject(CLSID_ShellLink);

 aSLInk := aObject as IShellLink;

 aPFile := aObject as IPersistFile;

 with aSLink do

 begin

  SetPath(PChar(editProgramm.Text));

  SetArguments(PCHar(editParameter.Text));

  SetWorkingDirectory(szWinDir);

 end;

 sDirectory := GetShellFolderPath(CSIDL_DESKTOPDIRECTORY);

//sDirectory := GetShellFolderPath(CSIDL_STARTMENU);

 Assert(sDirectory[Length(sDirectory)] <> '\', 'Backslash!');

 wsFileName := sDirectory + '\' + editLink.Text;

 aPFile.Save(PWChar(wsFileName), false);

end;

function TForm1.GetShellFolderPath(const aFolder : integer) : string;

var

 pIIL : PItemIDList;

 szPath : array[0..MAX_PATH] of char;

 aMalloc : IMalloc;

begin

 Result := '';

 Assert(aFolder <= CSIDL_PRINTHOOD, 'Falsche ShellFolder-Konstante');

 OleCheck(SHGetSpecialFolderLocation(0, aFolder, pIIL));

 SHGetPathFromIDList(pIIL, szPath);

 OleCheck(SHGetMalloc(aMalloc));

 aMalloc.Free(pIIL);

 Result := szPath;

end;

返回顶部】 【打印本页】 【关闭窗口

关于我们 / 给我留言 / 版权举报 / 意见建议 / 网站编程QQ群   
Copyright ©2003- 2024 Lihuasoft.net webmaster(at)lihuasoft.net 加载时间 0.00374