当前位置:主页>Delphi教程>文章内容
在delphi中建立程序的快捷方式--并将快捷方式放在开始->程序->的启动组中
来源: 作者: 发布时间:2007-04-29  

前几天应客户要求写这个东西,其实用VB,VC可能更快些,不过,我还是喜欢用DELPHI

首先 uses ActiveX,ComObj,StdCtrls,ShlObj,FileCtrl;

在指定文件夹建立当前应用程序才的快捷方式

procedure Tform1.MakeLink(Foldername:string;proName, lnkName, Description: string);
var
  WorkDir, DestName: string;
  aObj: IUnknown;
  MyLink: IShellLink;
  MyPFile: IPersistFile;
  WFileName: WideString;
  curdir: array[0..100] of Char;
begin
  DestName := Foldername + lnkName;
  aObj := CreateComObject(CLSID_ShellLink);
  MyLink := aObj as IShellLink;
  MyPFile := aObj as IPersistFile;
  GetCurrentDirectory(sizeof(curdir), curdir);
  workdir := curdir;
  proname := trim(WorkDir)+'\'+proname;
  with MyLink do
  begin

    SetShowCmd(SW_NORMAL);
    SetArguments('');
    SetDescription(pChar(Description));
    SetPath(pChar(proName));
    SetWorkingDirectory(pChar(WorkDir));
  end;
  CreateDir(ExtractFilePath(DestName));
  WFileName := DestName;
  MyPFile.Save(PWChar(WFileName), False);
end;

//获得开始->程序->的启动组 的路径

function Tform1.GetSpecialFolder: string;//get starup Floder
var
  Pidl: PItemIDList;
  handle : THandle;
  Comp: TComponent;
  LinkDir : string;
begin
  result:='';
  Comp := self;//self.owner;
  handle := (Comp as TForm).handle;
  if SUCCEEDED(SHGetSpecialFolderLocation(handle, CSIDL_COMMON_STARTUP, Pidl))  then //别的特殊路径也可以用CSIDL_COMMON或的,在delphi中查一下就可以了

 begin
       SetLength(LinkDir, MAX_PATH);
       SHGetPathFromIDList(Pidl, PChar(LinkDir));
       SetLength(LinkDir, StrLen(PChar(LinkDir)));
       result:=linkdir+'\';

  end;
end;
//
部分内容借鉴了大富翁bbs上的内容


 
上一篇:大自然的BUG、人的BUG、软件的疑难杂症   下一篇:自绘XP风格菜单
 
  相关文章
·大自然的BUG、人的BUG、软件的疑难杂症
·自绘XP风格菜单
·基于阻塞Socket(Indy)的远程控制类库-T
·中文转码器的工作原理
·mscomm32的简单应用
·生成BIG5字符集所有字符
·使用Dephi组件的生存期管理
·DFM文件与XML文件互转
·如何获取自己在程序中运行的外部EXE的H
·自己编写树(Tree)的封装类
·程序间参数传递
·深入GDI(图形设备接口)编程
 
【关闭窗口】
推荐本站资源
最新文章