注册快捷方式

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 pggpjj 的 blog

这里我们用到了com对象
我要解释一下
com(compent  object model)其实是microsoft提出的组件标准,它定义了组件和应用程序之间进行通信的标准,同时提供了组件程序运行时所需要的环境。这是书上讲的,现在我用口头语客串几句。com可以用不同的语言编可以实现通信的效果,可以把它们看成一些二进制的可执行程序。
下面就是注册快捷方式
type
shortcuttype = (st_desktop, st_sendto, st_quicklaunch, st_startmenu);//定义一个数据类型


procedure createshortcut(filename :string; description :string;
  arguements :string; location :shortcuttype);
var
  cobj :iunknown;
  slink :ishelllink;
  pfile :ipersistfile;
  sdir :string;
  lname :string;
  spath :string;
  wfilename :widestring;
  mreg :tregistry;
  key :string;
  tmp :string;
begin
  cobj :=createcomobject(clsid_shelllink); //创建com对象
  slink :=cobj as ishelllink; //com对象转化为ishelllink型接口
  pfile :=cobj as ipersistfile; //com对象转化为ipersistfile型接口

  //获取路径
  spath :=extractfilepath(filename);
  with slink do begin
   setpath(pchar(filename)); //设置执行文件名
   setarguments(pchar(arguements)); //设置执行参数
   setdescription(pchar(description)); //设置描述信息
   setworkingdirectory(pchar(spath)); //设置工作路径,即执行程序所在目录
  end;

  //获取各快捷方式的实际目录
  mreg :=tregistry.create;
  with mreg do begin
    rootkey :=hkey_current_user;

    key :=regstr_path_explorer; //delphi在单元regstr中定义的常量
    tmp :=key + '\shell folders';

    openkey(tmp, false);
    case location of
      st_desktop: sdir :=readstring('desktop');
      st_sendto: sdir :=readstring('sendto');
      st_startmenu: sdir :=readstring('start menu');
      st_quicklaunch:
      begin
        sdir :=readstring('appdata');
        sdir :=sdir + '\microsoft\internet explorer\quick launch';
      end;
    end;

    //生成快捷方式文件名
    lname :=changefileext(filename, '.lnk');
    lname :=extractfilename(lname);
    if sdir<>'' then
    begin
      //生成快捷方式全路径名
      wfilename :=sdir + '\' + lname;
      //保存生成的快捷方式文件
      pfile.save(pwchar(wfilename), false);
    end;

    free;
  end;
end;
上面声明了一个过程
下面应用它
var
  fname :string;
  fdesc :string;
  fargu :string;
begin
  fname :=application.exename;
  fdesc :='delphi 7.0 创建的快捷方式--桌面';
  fargu :='无参数';
  createshortcut(fname,fdesc,fargu, st_desktop);
end;
procedure tform1.speedbutton2click(sender: tobject);
var
  fname :string;
  fdesc :string;
  fargu :string;
begin
  fname :=application.exename;
  fdesc :='delphi 7.0 创建的快捷方式--发送到。。。';
  fargu :='无参数';
  createshortcut(fname,fdesc,fargu, st_sendto);
end;

procedure tform1.speedbutton3click(sender: tobject);
var
  fname :string;
  fdesc :string;
  fargu :string;
begin
  fname :=application.exename;
  fdesc :='delphi 7.0 创建的快捷方式--开始菜单';
  fargu :='无参数';
  createshortcut(fname,fdesc,fargu, st_startmenu);

end;

procedure tform1.speedbutton4click(sender: tobject);
var
  fname :string;
  fdesc :string;
  fargu :string;
begin
  fname :=application.exename;
  fdesc :='delphi 7.0 创建的快捷方式--快速启动';
  fargu :='无参数';
  createshortcut(fname,fdesc,fargu, st_quicklaunch);
end;

procedure tform1.speedbutton5click(sender: tobject);
var
  sname :string;
  saddress :string;
begin
  sname :='p哥网';
  saddress :='http://www.pggpjj.com';
  createinternetshortcut(sname, saddress);
end;

本文关键:注册快捷方式
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top