这里我们用到了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;
|