让Delphi程序更方便地启动
【打印文章】
一般情况下,程序在安装时,要进行建立自己的程序组和程序项、在桌面上建立快捷方式、
让程序随WIN9X/NT自动启动、把程序快捷方式放入快速启动工具栏等工作,其目的就
是让用户更容易、更方便运行自己的程序,从而且增加程序的友好性。下面我们就讨论一下在
DELPHI程序如果实现这四项操作。
一、建立自己的程序组和程序项
1、实现原理
建立自己的程序组,就是在WINDOWS目录下的子目录Start Menu\Programs下,
建立一个子目录;建立程序项,就是在该子目录下建立程序的快捷方式。
2、建立程序的快捷方式
由于建立自己的程序组和程序项、在桌面上建立快捷方式、把程序快捷方式放入快速
启动工具栏三个操作中要用到建立程序快捷方式的操作,首先来讨论一下 如何在DELPHI
程序中建立程序快捷方式。
在手工建立程序的快捷方式时,通常要指定程序的文件名称和运行参数;在程序中建
立程序的快捷方式时还要指定程序的工作目录。我们可以用ShlObj单元中COM对象IShellLink
来指定程序的文件名称、运行参数和程序的工作目录三个参数,然后用COM对象IPersistFile
来保存快捷方式文件。具体的实现步骤请参见下面程序函数和注释。
我们要用到的操作是在指定目录下建立指定程序的快捷方式,因而要指定快捷文件要
保存的目录。
{ 建立程序的快捷方式,程序文件名称为strExeFileName,运行参数为strParameters,
快捷方式所在目录为strPath,返回值为True表示成功建立快捷方式,请在单元包含中增加
ComObj, ShlObj, ActiveX三个单元 }
function CreateShortcut( strExeFileName, strParameters, strPath : string ) : boolean;
var
strLnkFileName : widestring;//程序的快捷方式文件名称
shelllinkTemp : IShellLink;
persistfileTemp : IPersistFile;
begin
//设置快捷方式的参数
shelllinkTemp := IShellLink( CreateComObject(CLSID_ShellLink));
with shelllinkTemp do
begin
SetPath( PChar( strExeFileName ) ); //设置程序文件全名
SetArguments( PChar( strParameters) );//设置程序的命令行参数
//设置程序的工作目录
SetWorkingDirectory( PChar( ExtractFilePath( strExeFileName ) ) );
end;
//构造快捷方式的文件名(.LNK),路径采用指定目录,文件名为程序文件名,扩展名为LNK
//路径采用指定目录,文件名为程序文件名
strLnkFileName := strPath + '\' + ExtractFileName( strExeFileName );
//替代文件扩展名
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;
3、建立自己的程序组和程序项
{ 创建程序组和程序项 }
procedure TForm1.Button2Click(Sender: TObject);
begin
//创建程序组MyGroup,即在C:\PWIN98\Start Menu\Programs下建立子目录MyGroup
if not DirectoryExists( 'C:\PWIN98\Start Menu\Programs\MyGroup' ) then
ForceDirectories( 'C:\PWIN98\Start Menu\Programs\MyGroup' );
//创建程序项,在该子目录下建立程序的快捷方式
if CreateShortcut( 'C:\Program Files\Borland\Dbd\Dbd32.exe','%1',
'C:\PWIN98\Start Menu\Programs\MyGroup' ) then
memo1.lines.add( '创建程序组和程序项成功' )//创建程序组和程序项成功
else//创建程序组和程序项失败
memo1.lines.add( '创建程序组和程序项失败' );
end;
二、在桌面上建立程序的快捷方式
1、实现原理
在桌面上建立程序的快捷方式,就是在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//创建桌面快捷方式成功
memo1.lines.add( '创建桌面快捷方式成功' )
else//创建桌面快捷方式失败
memo1.lines.add( '创建桌面快捷方式失败' );
end;
三、让程序随WIN9X/NT自动启动
让程序随WIN9X/NT自动启动,可以把程序的快捷方式放到“启动”程序组中,
不过这并不是一个好办法。较好的办法是修改系统注册表,在其中加入程序文件的名称及
运行参数。
1、实现原理
让程序随WIN9X/NT自动启动,可以在注册表的HKEY_LOCAL_MACHINE\Software
\Microsoft\Windows\CurrentVersion\Run中加入程序文件的名称及运行参数,使程序作为一般
程序随WIN9X/NT自动启动;或在HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsCurrentVersion\RunOnce中加入程序文件的名称及运行参数,使程序作为服务程序随WIN9X
/NT自动启动,这样按Ctrl+Alt+Del时,任务列表中将不会列出该程序的有关信息。
2、让程序随WIN9X/NT自动启动
{ 让自己的程序随WIN95/98/NT的启动而运行,请在单元包含中增加Registry单元 }
procedure TForm1.Button3Click(Sender: TObject);
var
registerTemp : TRegistry;
success : boolean;
begin
registerTemp := TRegistry.Create; //建立一个Registry实例
with registerTemp do
begin
RootKey:=HKEY_LOCAL_MACHINE;//设置根键值为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;//设置程序自动启动成功
end
else success := false;//设置程序自动启动失败
//善后处理
CloseKey;
Free;
end;
if success then memo1.lines.add( '设置程序自动启动成功' )
else memo1.lines.add( '设置程序自动启动失败' );
end;
四、把程序快捷方式放入快速启动工具栏
Windows95/98的任务栏是桌面上的一个特殊区域,用于显示“开始”菜单、时钟等以及
目前执行的任务。Windows98的任务栏增加了快速启动工具栏,将程序的快捷方式放在任务栏
的“快速启动”区,可以更方便地启动程序,以免在开始菜单中一级级地查找或关闭窗口在
桌面上启动程序。
Windows98 安装后缺省的快速启动工具栏包含“显示桌面”、“IE 浏览器”等。如果快
速启动工具栏已关闭,可用鼠标右键单击任务栏的空白区域,单击“工具栏”,确认已选中
“快速启动”即可打开。
1、实现原理
把程序快捷方式放入快速启动工具栏,就是在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下调试通过。
(作者:深圳王发军 wangfajun@163.net http://wangfajun.163.net)
让程序随WIN9X/NT自动启动、把程序快捷方式放入快速启动工具栏等工作,其目的就
是让用户更容易、更方便运行自己的程序,从而且增加程序的友好性。下面我们就讨论一下在
DELPHI程序如果实现这四项操作。
一、建立自己的程序组和程序项
1、实现原理
建立自己的程序组,就是在WINDOWS目录下的子目录Start Menu\Programs下,
建立一个子目录;建立程序项,就是在该子目录下建立程序的快捷方式。
2、建立程序的快捷方式
由于建立自己的程序组和程序项、在桌面上建立快捷方式、把程序快捷方式放入快速
启动工具栏三个操作中要用到建立程序快捷方式的操作,首先来讨论一下 如何在DELPHI
程序中建立程序快捷方式。
在手工建立程序的快捷方式时,通常要指定程序的文件名称和运行参数;在程序中建
立程序的快捷方式时还要指定程序的工作目录。我们可以用ShlObj单元中COM对象IShellLink
来指定程序的文件名称、运行参数和程序的工作目录三个参数,然后用COM对象IPersistFile
来保存快捷方式文件。具体的实现步骤请参见下面程序函数和注释。
我们要用到的操作是在指定目录下建立指定程序的快捷方式,因而要指定快捷文件要
保存的目录。
{ 建立程序的快捷方式,程序文件名称为strExeFileName,运行参数为strParameters,
快捷方式所在目录为strPath,返回值为True表示成功建立快捷方式,请在单元包含中增加
ComObj, ShlObj, ActiveX三个单元 }
function CreateShortcut( strExeFileName, strParameters, strPath : string ) : boolean;
var
strLnkFileName : widestring;//程序的快捷方式文件名称
shelllinkTemp : IShellLink;
persistfileTemp : IPersistFile;
begin
//设置快捷方式的参数
shelllinkTemp := IShellLink( CreateComObject(CLSID_ShellLink));
with shelllinkTemp do
begin
SetPath( PChar( strExeFileName ) ); //设置程序文件全名
SetArguments( PChar( strParameters) );//设置程序的命令行参数
//设置程序的工作目录
SetWorkingDirectory( PChar( ExtractFilePath( strExeFileName ) ) );
end;
//构造快捷方式的文件名(.LNK),路径采用指定目录,文件名为程序文件名,扩展名为LNK
//路径采用指定目录,文件名为程序文件名
strLnkFileName := strPath + '\' + ExtractFileName( strExeFileName );
//替代文件扩展名
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;
3、建立自己的程序组和程序项
{ 创建程序组和程序项 }
procedure TForm1.Button2Click(Sender: TObject);
begin
//创建程序组MyGroup,即在C:\PWIN98\Start Menu\Programs下建立子目录MyGroup
if not DirectoryExists( 'C:\PWIN98\Start Menu\Programs\MyGroup' ) then
ForceDirectories( 'C:\PWIN98\Start Menu\Programs\MyGroup' );
//创建程序项,在该子目录下建立程序的快捷方式
if CreateShortcut( 'C:\Program Files\Borland\Dbd\Dbd32.exe','%1',
'C:\PWIN98\Start Menu\Programs\MyGroup' ) then
memo1.lines.add( '创建程序组和程序项成功' )//创建程序组和程序项成功
else//创建程序组和程序项失败
memo1.lines.add( '创建程序组和程序项失败' );
end;
二、在桌面上建立程序的快捷方式
1、实现原理
在桌面上建立程序的快捷方式,就是在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//创建桌面快捷方式成功
memo1.lines.add( '创建桌面快捷方式成功' )
else//创建桌面快捷方式失败
memo1.lines.add( '创建桌面快捷方式失败' );
end;
三、让程序随WIN9X/NT自动启动
让程序随WIN9X/NT自动启动,可以把程序的快捷方式放到“启动”程序组中,
不过这并不是一个好办法。较好的办法是修改系统注册表,在其中加入程序文件的名称及
运行参数。
1、实现原理
让程序随WIN9X/NT自动启动,可以在注册表的HKEY_LOCAL_MACHINE\Software
\Microsoft\Windows\CurrentVersion\Run中加入程序文件的名称及运行参数,使程序作为一般
程序随WIN9X/NT自动启动;或在HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsCurrentVersion\RunOnce中加入程序文件的名称及运行参数,使程序作为服务程序随WIN9X
/NT自动启动,这样按Ctrl+Alt+Del时,任务列表中将不会列出该程序的有关信息。
2、让程序随WIN9X/NT自动启动
{ 让自己的程序随WIN95/98/NT的启动而运行,请在单元包含中增加Registry单元 }
procedure TForm1.Button3Click(Sender: TObject);
var
registerTemp : TRegistry;
success : boolean;
begin
registerTemp := TRegistry.Create; //建立一个Registry实例
with registerTemp do
begin
RootKey:=HKEY_LOCAL_MACHINE;//设置根键值为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;//设置程序自动启动成功
end
else success := false;//设置程序自动启动失败
//善后处理
CloseKey;
Free;
end;
if success then memo1.lines.add( '设置程序自动启动成功' )
else memo1.lines.add( '设置程序自动启动失败' );
end;
四、把程序快捷方式放入快速启动工具栏
Windows95/98的任务栏是桌面上的一个特殊区域,用于显示“开始”菜单、时钟等以及
目前执行的任务。Windows98的任务栏增加了快速启动工具栏,将程序的快捷方式放在任务栏
的“快速启动”区,可以更方便地启动程序,以免在开始菜单中一级级地查找或关闭窗口在
桌面上启动程序。
Windows98 安装后缺省的快速启动工具栏包含“显示桌面”、“IE 浏览器”等。如果快
速启动工具栏已关闭,可用鼠标右键单击任务栏的空白区域,单击“工具栏”,确认已选中
“快速启动”即可打开。
1、实现原理
把程序快捷方式放入快速启动工具栏,就是在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下调试通过。
(作者:深圳王发军 wangfajun@163.net http://wangfajun.163.net)
本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( Pfan.cn )
【编程爱好者论坛】