讓Delphi程序更方便地打開
發(fā)表時間:2023-08-16 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]一般情況下,程序在安裝時,要進(jìn)行建立自己的程序組和程序項(xiàng)、在桌面上建立快捷方式、 讓程序隨WIN9X/NT自動啟動、把程序快捷方式放入快速啟動工具欄等工作,其目的就 是讓用戶更容易、更方...
一般情況下,程序在安裝時,要進(jìn)行建立自己的程序組和程序項(xiàng)、在桌面上建立快捷方式、
讓程序隨WIN9X/NT自動啟動、把程序快捷方式放入快速啟動工具欄等工作,其目的就
是讓用戶更容易、更方便運(yùn)行自己的程序,從而且增加程序的友好性。下面我們就討論一下在
DELPHI程序如果實(shí)現(xiàn)這四項(xiàng)操作。
一、建立自己的程序組和程序項(xiàng)
1、實(shí)現(xiàn)原理
建立自己的程序組,就是在WINDOWS目錄下的子目錄Start Menu\Programs下,
建立一個子目錄;建立程序項(xiàng),就是在該子目錄下建立程序的快捷方式。
2、建立程序的快捷方式
由于建立自己的程序組和程序項(xiàng)、在桌面上建立快捷方式、把程序快捷方式放入快速
啟動工具欄三個操作中要用到建立程序快捷方式的操作,首先來討論一下 如何在DELPHI
程序中建立程序快捷方式。
在手工建立程序的快捷方式時,通常要指定程序的文件名稱和運(yùn)行參數(shù);在程序中建
立程序的快捷方式時還要指定程序的工作目錄。我們可以用ShlObj單元中COM對象IShellLink
來指定程序的文件名稱、運(yùn)行參數(shù)和程序的工作目錄三個參數(shù),然后用COM對象IPersistFile
來保存快捷方式文件。具體的實(shí)現(xiàn)步驟請參見下面程序函數(shù)和注釋。
我們要用到的操作是在指定目錄下建立指定程序的快捷方式,因而要指定快捷文件要
保存的目錄。
{ 建立程序的快捷方式,程序文件名稱為strExeFileName,運(yùn)行參數(shù)為strParameters,
快捷方式所在目錄為strPath,返回值為True表示成功建立快捷方式,請?jiān)趩卧性黾?nbsp;
ComObj, ShlObj, ActiveX三個單元 }
function CreateShortcut( strExeFileName, strParameters, strPath : string ) : boolean;
var
strLnkFileName : widestring;//程序的快捷方式文件名稱
shelllinkTemp : IShellLink;
persistfileTemp : IPersistFile;
begin
//設(shè)置快捷方式的參數(shù)
shelllinkTemp := IShellLink( CreateComObject(CLSID_ShellLink));
with shelllinkTemp do
begin
SetPath( PChar( strExeFileName ) ); //設(shè)置程序文件全名
SetArguments( PChar( strParameters) );//設(shè)置程序的命令行參數(shù)
//設(shè)置程序的工作目錄
SetWorkingDirectory( PChar( ExtractFilePath( strExeFileName ) ) );
end;
//構(gòu)造快捷方式的文件名(.LNK),路徑采用指定目錄,文件名為程序文件名,擴(kuò)展名為LNK
//路徑采用指定目錄,文件名為程序文件名
strLnkFileName := strPath + '\' + ExtractFileName( strExeFileName );
//替代文件擴(kuò)展名
strLnkFileName := copy( strLnkFileName,1, length( strLnkFileName ) -
length( ExtractFileExt( strExeFileName ) ) )
+ '.LNK';
//保存快捷方式的文件
persistfileTemp := shelllinkTemp as IPersistFile;
if S_OK = persistfileTemp.Save( PWChar( strLnkFileName ) , false ) then
result := true //保存成功,返回True
else result := false;//保存失敗,返回False
end;
。场⒔⒆约旱某绦蚪M和程序項(xiàng)
{ 創(chuàng)建程序組和程序項(xiàng) }
procedure TForm1.Button2Click(Sender: TObject);
begin
//創(chuàng)建程序組MyGroup,即在C:\PWIN98\Start Menu\Programs下建立子目錄MyGroup
if not DirectoryExists( 'C:\PWIN98\Start Menu\Programs\MyGroup' ) then
ForceDirectories( 'C:\PWIN98\Start Menu\Programs\MyGroup' );
//創(chuàng)建程序項(xiàng),在該子目錄下建立程序的快捷方式
if CreateShortcut( 'C:\Program Files\Borland\Dbd\Dbd32.exe','%1',
'C:\PWIN98\Start Menu\Programs\MyGroup' ) then
memo1.lines.add( '創(chuàng)建程序組和程序項(xiàng)成功' )//創(chuàng)建程序組和程序項(xiàng)成功
else//創(chuàng)建程序組和程序項(xiàng)失敗
memo1.lines.add( '創(chuàng)建程序組和程序項(xiàng)失敗' );
end;
二、在桌面上建立程序的快捷方式
。薄(shí)現(xiàn)原理
在桌面上建立程序的快捷方式,就是在WINDOWS目錄下的子目錄Desktop下
建立程序的快捷方式。
2、在桌面上建立程序的快捷方式
{ 在桌面上建立程序的快捷方式 }
procedure TForm1.Button1Click(Sender: TObject);
begin
//在目錄C:\PWIN98\Desktop下建立程序的快捷方式
if CreateShortcut( 'C:\Program Files\Borland\Dbd\Dbd32.exe','%1',
'C:\PWIN98\Desktop' ) then//創(chuàng)建桌面快捷方式成功
memo1.lines.add( '創(chuàng)建桌面快捷方式成功' )
else//創(chuàng)建桌面快捷方式失敗
memo1.lines.add( '創(chuàng)建桌面快捷方式失敗' );
end;
三、讓程序隨WIN9X/NT自動啟動
讓程序隨WIN9X/NT自動啟動,可以把程序的快捷方式放到“啟動”程序組中,
不過這并不是一個好辦法。較好的辦法是修改系統(tǒng)注冊表,在其中加入程序文件的名稱及
運(yùn)行參數(shù)。
。、實(shí)現(xiàn)原理
讓程序隨WIN9X/NT自動啟動,可以在注冊表的HKEY_LOCAL_MACHINE\Software
\Microsoft\Windows\CurrentVersion\Run中加入程序文件的名稱及運(yùn)行參數(shù),使程序作為一般
程序隨WIN9X/NT自動啟動;或在HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsCurrentVersion\RunOnce中加入程序文件的名稱及運(yùn)行參數(shù),使程序作為服務(wù)程序隨WIN9X
/NT自動啟動,這樣按Ctrl+Alt+Del時,任務(wù)列表中將不會列出該程序的有關(guān)信息。
。、讓程序隨WIN9X/NT自動啟動
{ 讓自己的程序隨WIN95/98/NT的啟動而運(yùn)行,請?jiān)趩卧性黾覴egistry單元 }
procedure TForm1.Button3Click(Sender: TObject);
var
registerTemp : TRegistry;
success : boolean;
begin
registerTemp := TRegistry.Create; //建立一個Registry實(shí)例
with registerTemp do
begin
RootKey:=HKEY_LOCAL_MACHINE;//設(shè)置根鍵值為HKEY_LOCAL_MACHINE
//找到Software\Microsoft\Windows\CurrentVersion\Run
if OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',True) then
//寫入自己程序的快捷方式信息
begin
WriteString( 'DBD', 'C:\Program Files\Borland\Dbd\Dbd32.exe' );
success := true;//設(shè)置程序自動啟動成功
end
else success := false;//設(shè)置程序自動啟動失敗
//善后處理
CloseKey;
Free;
end;
if success then memo1.lines.add( '設(shè)置程序自動啟動成功' )
else memo1.lines.add( '設(shè)置程序自動啟動失敗' );
end;
四、把程序快捷方式放入快速啟動工具欄
Windows95/98的任務(wù)欄是桌面上的一個特殊區(qū)域,用于顯示“開始”菜單、時鐘等以及
目前執(zhí)行的任務(wù)。Windows98的任務(wù)欄增加了快速啟動工具欄,將程序的快捷方式放在任務(wù)欄
的“快速啟動”區(qū),可以更方便地啟動程序,以免在開始菜單中一級級地查找或關(guān)閉窗口在
桌面上啟動程序。
Windows98 安裝后缺省的快速啟動工具欄包含“顯示桌面”、“IE 瀏覽器”等。如果快
速啟動工具欄已關(guān)閉,可用鼠標(biāo)右鍵單擊任務(wù)欄的空白區(qū)域,單擊“工具欄”,確認(rèn)已選中
“快速啟動”即可打開。
。、實(shí)現(xiàn)原理
把程序快捷方式放入快速啟動工具欄,就是在WINDOWS目錄下的子目錄
Application Data\Microsoft\Internet Explorer\Quick Launch下建立程序的快捷方式。
2、把程序快捷方式放入快速啟動工具欄
{ 將程序快捷方式加入快速啟動工具欄 }
procedure TForm1.Button4Click(Sender: TObject);
begin
//將程序快捷方式加入快速啟動工具欄
if CreateShortcut( 'C:\Program Files\Borland\Dbd\Dbd32.exe','%1',
'C:\PWIN98\Application Data\Microsoft\Internet Explorer\Quick Launch' )
then//成功
memo1.lines.add( '將程序快捷方式加入快速啟動工具欄成功' )
else//失敗
memo1.lines.add( '將程序快捷方式加入快速啟動工具欄失敗' );
end;
以上程序在PWIN98+DELPHI3.0下調(diào)試通過。
(作者:深圳王發(fā)軍 wangfajun@163.net http://wangfajun.163.net)