让Delphi程序更方便地启动_Delphi

  • 内容
  • 评论
  • 相关

  一般情况下,程序在安装时,要进行建立自己的程序组和程序项、在桌面上建立快捷方式、  
  让程序随WIN9X/NT自动启动、把程序快捷方式放入快速启动工具栏等工作,其目的就  
  是让用户更容易、更方便运行自己的程序,从而且增加程序的友好性。下面我们就讨论一下在  
  DELPHI程序如果实现这四项操作。  
    
  一、建立自己的程序组和程序项  
    1、实现原理  
      建立自己的程序组,就是在WINDOWS目录下的子目录Start Menu/Programs下,  
  建立一个子目录;建立程序项,就是在该子目录下建立程序的快捷方式。  
    2、建立程序的快捷方式  

http://www.gaodaima.com/?p=66010让Delphi程序更方便地启动_Delphi

      由于建立自己的程序组和程序项、在桌面上建立快捷方式、把程序快捷方式放入快速  
  启动工具栏三个操作中要用到建立程序快捷方式的操作,首先来讨论一下 如何在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)

欢迎大家阅读《让Delphi程序更方便地启动_Delphi》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

原创文章,转载请注明: 转载自搞代码

本文链接地址: 让Delphi程序更方便地启动_Delphi

微信支付二维码

微信 赏一包辣条吧~

支付宝支付二维码

支付宝 赏一听可乐吧~

评论

0条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注