网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
用Delphi编码实现程序自启动
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式

作者: 吴淑华

  程序自启动的原理

程序自启动有以下两种方式:

1. 利用Win.ini文件实现程序的自动启动

Win.ini是系统保存在“C:Windows”目录下的一个系统初始化文件,系统在启动时会检索该文件中的相关项,以进行系统环境的初始设置。在该文件中的“[windows]”数据段中,有两个数据项“load=”和“run=”,它们的作用就是在系统启动之后自动地装入和运行相关的程序。如果我们需要在系统启动之后立即装入并运行一个程序,只需要将运行文件的全文件名添加在该数据项的后面,系统启动后就会自动运行该程序,系统也会进入特定的操作环境中。

2. 利用注册表实现相关程序的自动启动

系统注册表保存着系统的软件、硬件及其他与系统配置有关的重要信息,一个计算机系统的系统注册表一旦遭到破坏,整个系统将无法运行。在计算机系统注册表中有HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/Current_Version/Run子键,如果要让程序在系统启动的过程中启动该程序,就可以向该目录添加一个子键。具体的过程是在注册表中右击该项,选中其中的“新建”项目,然后选中其中的“串值”,建立新的串值后将它改成相应的名称,双击新建的串值,输入新的数值,自动启动程序的过程就设置完成。

编程实例

在Delphi 5.0中同时具有对注册表和INI文件操作的函数。下面是笔者编写的一个简单程序,该程序通过修改注册表和INI文件,使系统自动启动,相关程序的设置工作比较简单可靠。

1. 程序功能概述

程序的主界面是对话框,在主界面对话框中有两个编辑框、一个按钮组、一个打开文件对话框、两个普通按钮(Button)组成。操作者先在编辑框中添加需要自动加载的程序全文件名(也可以通过浏览按钮来完成),然后通过按钮组中两个按钮完成加载方式的选择(注册表方式或者修改Win.ini文件的方式),最后操作者通过点击“应用”按钮实现程序的自动加载,同时系统会提示操作者是否将计算机重新启动,以便观察程序的具体功能完成情况。

2. 程序代码

procedure TForm1.Button1Click(Sender: TObject);

{浏览按钮的功能代码}

begin

if (OpenDlg.Execute) then

{当操作者选择OK时,程序取得选择文件的全路径名(包括文件的路径及文件名称),并将相应的数值传输给相关的控件变量。}

Edit2.Text := OpenDlg.FileName;

end;

procedure TForm1.OKBtnClick(Sender: TObject);

{应用按钮的功能代码}

Var

lKey: HKey;

i,len: integer;

title, data_set: LPCTSTR;

ret0,ret1: longint;

filename: String;

begin

if (edit1.Text =‘’) THEN

{如果操作者没有填写要设置项的标题,程序显示对话框,提示操作者进行相关内容的填写。}

begin

Application.MessageBox(‘Please input the title name’,‘提示’,MB_OK);

EXIT;

end;

title:=PChar(edit1.Text);

if (edit2.text =‘’)THEN

{如果操作者没有选择要设置的程序全路径文件名,程序显示对话框提示操作者进行相关的选择。}

begin

Application.MessageBox(‘Please input the programe file name’,‘提示’,MB_OK);

exit;

end;

if (RadioGroup1.ItemIndex = 0) then

{如果操作者选择注册表方式,程序修改系统的注册表。}

begin

data_Set:=‘Software\Microsoft\

Windows\CurrentVersion\Run’;

{设置注册表中相关的路径}

ret0:=RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, 0, KEY_WRITE, lKey);

//打开注册表中的相应项

if (ret0<>ERROR_SUCCESS) then

Application.MessageBox(‘错误0’,‘提示’,MB_OK);

len := Length(Trim(Edit2.text))+1;

filename := Trim(Edit2.text);

for i:=0 to Length(filename) do

if(filename[i]=‘\’)then

len:=len+1;

ret1:=RegSetValueEx(lKey,PChar(title),0,REG_SZ,Pchar(filename),len);

//将相关的信息写入注册表。

if(ret1<>ERROR_SUCCESS) then

//判断系统的相关注册是否成功?

Application.MessageBox(‘错误1’,‘提示’,MB_OK);

RegCloseKey(lKey);

//关闭注册表中的相应的项

end

else begin

WritePrivateProfileString(‘windows’,‘load’, PChar(filename),‘c:\windows\win.ini’);

WritePrivateProfileString(‘windows’,‘run’, PChar(filename),‘c:\windows\win.ini’);

end;

VerifyDlg.ShowModal;

{显示对话框,提示操作者是否需要重新启动计算机,以便验证程序的功能。}

end;

procedure TVerifyDlg.OKBtnClick(Sender: TObject);

{重新启动按钮的功能代码}

var

OsVerInfo:OSVERSIONINFO;

//保存系统版本信息的数据结构

Begin

OsVerInfo.dwOSVersionInfoSize:=sizeof(OSVERSIONINFO);

GetVersionEx(OsVerInfo);

//取得系统的版本信息

if(OsVerInfo.dwPlatformId=VER_PLATFORM

_WIN32_WINDOWS) then

ExitWindowsEx(EWX_REBOOT,0);

//重新启动计算机

end;

(本程序在Win98、Delphi 5.0环境下调试通过) 

  • 上一篇资讯: 自己制作网页特效软件
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号