每一个编程爱好者,都希望自己的作品能为大家接受和喜爱,但我们的作品大多是简单的一个EXE文件的拷贝,既不需安装也没有删除程序,让人觉得只是程序而不是产品,以下我以Delphi 为例和大家交流一下程序组快捷方式建立、添加删除程序组中的删除项和程序的自删除等功能。 1.以下先来介绍建立程序组快捷方式的方法: 在uses 单元中加入 shlobj,activex,comobj,在窗口中添加一个button,并在其事件中添加以下代码:
| procedure TForm1.Button1Click(Sender: TObject); var sl:ishelllink; pf:ipersistFile; lnkName:Widestring; app:string; begin olecheck(cocreateInstance(clsid_shellLink,nil,Clsctx_inproc_server,iShellLink,sl)); pf:=sl as IPersistFile; app:=application.exename; OleCheck(sl.SetPath(pchar(app)));//建立有效的链接 LnkName:='C:\WINDOWS\Start Menu\Programs\redbird.lnk'; //设置目标文件 pf.Save(PWideChar(lnkName),true); //保存文件 end; |
当然以上这段代码应放在程序第一次运行时的代码段中,而且程序组或是桌面的位置最好要以注册表 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders中的对应值为准。您对注册表的操作可通过Delphi对注册表封装了的TRegistry 来完成,此法比较简单,在此就不再赘述,如您想写出更小的程序或是您在用VB编程,那就得调用API.以下作者将以对注册表API函数的直接调用向大家介绍如何建立添加删除程序中的项目.同样,这段代码也应放在程序首次运行时执行。
| program project1; uses Windows; {$R *.RES} type TRegKeyInfo = record NumSubKeys: Integer; MaxSubKeyLen: Integer; NumValues: Integer; MaxValueLen: Integer; MaxDataLen: Integer; FileTime: TFileTime; end; var IHand:integer; IKey:Hkey; Regs: TRegKeyInfo; begin RegCreateKeyEx(HKEY_LOCAL_MACHINE, // 注册表根键 'Software\Microsoft\Windows\CurrentVersion\Uninstall\MyApp'//你的程序项 , 0, nil,REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, nil, IKey, @IHand); |
希望看到更多更经典的开发技巧,请随时刷新《开发特区》栏目。
|