正在阅读:快捷方式/删除项/EXE自删除DIY快捷方式/删除项/EXE自删除DIY

2004-06-08 09:52 出处:CSDN 作者:redbirdli 责任编辑:linjixiong

  每一个编程爱好者,都希望自己的作品能为大家接受和喜爱,但我们的作品大多是简单的一个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);

 

  希望看到更多更经典的开发技巧,请随时刷新《开发特区》栏目。
察看评论详细内容 我要发表评论
作者笔名 简短内容 发表时间
:

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品