国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

程序快捷方式/程序刪除項(xiàng)/EXE自刪除DIY

2019-11-18 18:21:56
字體:
供稿:網(wǎng)友
作者:火鳥 redbirdli@hotmail.com
每一個(gè)編程愛好者,都希望自己的作品能為大家接受和喜愛,但我們的作品大多是簡單的一個(gè)EXE文件的拷貝,既不需安裝也沒有刪除程序,讓人覺得只是程序而不是產(chǎn)品,以下我以Delphi 為例和大家交流一下程序組快捷方式建立、添加刪除程序組中的刪除項(xiàng)和程序的自刪除等功能。
1.以下先來介紹建立程序組快捷方式的方法:
在uses 單元中加入 shlobj,activex,comobj,在窗口中添加一個(gè)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'; //設(shè)置目標(biāo)文件
pf.Save(PWideChar(lnkName),true); //保存文件
end;
當(dāng)然以上這段代碼應(yīng)放在程序第一次運(yùn)行時(shí)的代碼段中,而且程序組或是桌面的位置最好要以注冊表 HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer/Shell Folders中的對應(yīng)值為準(zhǔn)。您對注冊表的操作可通過Delphi對注冊表封裝了的TRegistry 來完成,此法比較簡單,在此就不再贅述,如您想寫出更小的程序或是您在用VB編程,那就得調(diào)用API.以下作者將以對注冊表API函數(shù)的直接調(diào)用向大家介紹如何建立添加刪除程序中的項(xiàng)目.同樣,這段代碼也應(yīng)放在程序首次運(yùn)行時(shí)執(zhí)行。
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'//你的程序項(xiàng)
, 0, nil,REG_OPTION_NON_VOLATILE, KEY_ALL_access, nil, IKey, @IHand);

RegSetValueEx(Ikey, 'DisplayName'
, 0, REG_SZ, Pchar('刪除我吧!')//刪除列表中顯示的字符
,10); //字符長度
RegSetValueEx(Ikey, 'UninstallString',0
, REG_SZ, pchar(ParamStr(0)+' /UNINSTALL'),//刪除所調(diào)用的命令行
4);
end.
此段代碼將 你的程序全路徑名和"/UNINSTALL"參數(shù)寫入了注冊表 HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Uninstall/MyApp中,你在添加刪除程序中可以看到“刪除我吧!”的項(xiàng)目,而當(dāng)你點(diǎn)擊此項(xiàng)目時(shí),你的程序通過ParamStr(1)將收到"/UNINSTALL"的參數(shù),并以此為標(biāo)識調(diào)用刪除程序的代碼即可。以下我們再來介紹當(dāng)你的程序收到此參數(shù)后,不需調(diào)用其它程序而“自刪除”的兩個(gè)方法。
其中之一是在接到此參數(shù)后動(dòng)態(tài)建立一個(gè)刪除文件的批處理文件,在程序內(nèi)部將安裝程序后生成的諸如快捷方式等文件和注冊表值刪除后在退出前調(diào)用此批處理文件將自己刪除即可,如:
procedure TForm1.FormCreate(Sender: TObject);
var f:textfile ;//作者不建議您將刪除代碼放在FormCreate事件中,作者認(rèn)為那將出現(xiàn)不能刪除的可能性。
begin
AssignFile(f,'temp.bat');
Rewrite(F);
Writeln(f,'del '+paramstr(0));
Writeln(f,'del temp.bat');
closefile(f);
application.Terminate ;
winexec('temp.bat',SW_HIDE);
halt;
end;
對文本文件的處理比較簡單,幾經(jīng)摸索,作者又找到了更好的第二種方法,簡單易行,直接調(diào)用命令shell即可完成刪除工作:
application.Terminate;
winexec(pchar('command.com /c del '+ParamStr(0)),SW_MINIMIZE);//最小化執(zhí)行刪除操作,否則將看到DOS窗口的瞬間閃爍
halt;
好了,有了以上的三點(diǎn)裝飾,您的程序應(yīng)該已經(jīng)像個(gè)產(chǎn)品的樣子,至于程序的內(nèi)容,還得您來充實(shí)了。
作者:火鳥 redbirdli@hotmail.com 于2000年

上一篇:一個(gè)簡單Tracer類,用來為應(yīng)用寫入跟蹤

下一篇:QQ聊天記錄器演示程序

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點(diǎn)

疑難解答

圖片精選

網(wǎng)友關(guān)注

主站蜘蛛池模板: 禄丰县| 南靖县| 靖西县| 鄄城县| 浦县| 吴桥县| 神木县| 休宁县| 奉化市| 平昌县| 梁平县| 资溪县| 淮南市| 绥中县| 正镶白旗| 武乡县| 湘潭县| 当涂县| 大足县| 凉山| 桐城市| 邹城市| 通州区| 阳新县| 肇庆市| 长春市| 武义县| 大冶市| 乌什县| 盐池县| 外汇| 敦煌市| 长顺县| 石狮市| 临汾市| 大邑县| 大方县| 抚远县| 安阳县| 田林县| 凤阳县|