首页 | 社区 | 博客 | 招聘 | 文章 | 新闻 | 下载 | 读书 | 代码
亲,您未登录哦! 登录 | 注册

让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)

本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( Pfan.cn )

编程爱好者论坛

本栏最新文章