china.com
主页
新闻
体育
游戏
文化
教育
健康
财经
科技
旅游
军事
娱乐
商贸
  科技动态 硬件广场 下载基地 网络教室 网络冲浪 科学博览 移动时代 手机上网 桌面壁纸 科技商情  


将应用程序放到Windows启动中

2000-09-06 11:16:11

  使用Windows 95的编程人员都知道,Windows 95在启动时,能自动将一些应用程序加载并运行,利用VB5.0可以非常方便地实现这一功能。

  一、 编程思路

  我们知道,在Windows 95系统中有一个注册表编辑器程序Regedit.exe,它是用于更改系统注册表设置的工具。系统注册表中包含了关于系统配置及运行的重要信息。打开注册表编辑器,在左侧栏内双击“HKEY—LOCAL—MACHINE”,双击其下的“SOFTWARE”,双击其下的“Microsoft”,双击其下的“Windows”, 双击其下的“CurrentVersion”,双击其下的“Run”,这时在右侧窗口内会看到一些键名及其键值,其内容随机器的不同配置而有所不同。例如,在我的系统中有这样一项键名:名称为SysExplr,数据是“d:\progarm files\SthVCD\SysExplr.EXE”,这是系统控制“解霸五自动探测器”自动运行的有关信息。

  因此,只需分别以键名和键值的形式,将您的应用程序的标题和完整路径添加到Regedit.exe的以下目录中:HKEY—LOCAL—MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

  在Windows下次启动时就会自动运行增加的程序项。

  要想在编程中实现上述思路,需要了解如何利用VB5.0实现对系统注册表中“键”的创建、打开、关闭、删除等操作。VB5.0本身没有提供这方面的功能。通过调用Windows的有关API函数,即可实现对系统注册表的各项操作。

  二、具体步骤

  1.在VB5.0编程环境中,新建工程Project1,在Form1中添加命令按钮Command1。

  2.在Project1中添加Moudle1。在Moudle1中定义下列常量和函数声明:

  Const REG—SZ = 1

  Global Const HKEY—LOCAL—MACHINE = &H80000002

  Declare Function OSRegOpenKey Lib ″advapi32″Alias ″RegOpenKeyA″ (ByVal hkey As Long, ByVal lpszSubKey As String, phkResult As Long) As Long

  注:该函数用于打开系统注册表中已存在的键。函数的返回值: 如键打开成功返回0,否则返回非0,phkResult被设置为该键的句柄。

  Declare Function OSRegSetValueEx Lib ″advapi32″ Alias ″RegSetValueExA″ (ByVal hkey As Long, ByVal lpszValueName As String, ByVal dwReserved As Long, ByVal fdwType As Long, lpbData As Any, ByVal cbData As Long) As Long

  注:该函数用于向系统注册表中指定的键添加键名和键值。函数的返回值:添加键名、键值成功返回0,否则返回非0。

  Declare Function OSRegCloseKey Lib ″advapi32″ Alias ″RegCloseKey″ (ByVal hkey As Long) As Long

  注:该函数用于关闭系统注册表中打开的键。函数的返回值:如键关闭成功返回0,否则返回非0。

  3.在Moudle1中编写下列函数:

  Function RegOpenKey(ByVal hkey As Long, ByVal lpszSubKey As String, phkResult As Long) As Boolean

  Dim lResult As Long

  On Error GoTo 0  ' 关闭错误陷阱

  lResult = OSRegOpenKey(hkey, lpszSubKey, phkResult)

  If lResult = 0 Then RegOpenKey = True

  Else RegOpenKey = False

  End Function

  Function RegSetStringValue(ByVal hkey As Long, ByVal strValueName As String, ByVal strData As String, Optional ByVal fLog) As Boolean

  Dim lResult As Long

   On Error GoTo 0

  lResult = OSRegSetValueEx(hkey, strValueName, 0&, REG—SZ, ByVal strData, LenB(StrConv(strData, vbFromUnicode) + 1)

  注:StrConv是VB提供的函数,返回按指定类型转换的 Variant (String)。vbUnicode 是VB系统常数。在上面程序中,StrConv(strData,vbFromUnicode)的作用是:根据系统的缺省码页将字符串转换成Unicode。Unicode是国际标准化组织(ISO)字符标准,它使用16位(2字节编码方案),允许65536个不同的字符空间,Unicode包括标点符号、数学符号、修饰符号等的表示。

If lResult = 0 Then RegSetStringValue = True

Else RegSetStringValue = False

End Function

  4.双击Command1,在Click事件中编写下列代码:

  Private Sub Command1—Click()

   Dim hkey As Long

   Dim MyReturn As Long

   MyReturn = RegOpenKey(HKEY—LOCAL—MACHINE,″SOFTWARE\Microsoft\Windows\ CurrentVersion\Run″, hkey)

   If hkey = 0 Then

  MsgBox ″您要求打开的主键尚未创建,或者您的输入有误,请仔细核对后再次运行本程序!″

Exit Sub

   End If

   MyReturn = RegSetStringValue(hkey, ″MyAcess″, ″d:\program files\office97\office\mymsaccess.exe″, False)

  注:如果 fLog 丢失或为 True,则该动作将记录在日志文件,并且,如果用户选择删除已安装的应用程序,该值将被应用程序删除。

  If MyReturn Then MsgBox “您的程序已成功添加到Windows 95的启动中,再次启动Windows时系统将自动运行您的程序!", vbExclamation, “特别提示"

  Else MsgBox “您的这段代码中存在某种错误,请认真检查!", vbExclamation, “特别提示"

  OSRegCloseKey(hkey)

  End Sub

  以上程序在简体中文Windows95、VB5.0环境中调试通过。

  摘自《赛迪网》 张建军、张伍荣/文

404 Not Found

404 Not Found


nginx


科技检索


中华网推荐

  • 1000名医生在线咨询

  • 中国足球队官方网站

  • 鸦片玫瑰(新版)

  • 精选股票天地

  • 闪光的flash教程

  • 中华网汽车世界

  • 为你的爱情出谋划策

  • 网文精选——野百合集

  • 世界文化遗产在中国

  • 历届香港小姐风姿集



  •  


    网络教室编辑信箱
    版权声明 | 本站检索 | 联系方法 | 刊登广告 | 使用说明 | 关于中华网 | 豁免条款

    版权所有 中华网