添添b的全图:怎样让vb编的启动时运行?(要源代码)

来源:百度文库 编辑:中科新闻网 时间:2024/04/30 01:56:29

'建立一个模块,里面加如下代码
Option Explicit

'Public mark As Integer '控制是否自启动的标志变量(1自启动,0不自启动)

'添加删除自启动项目的API函数声明

Public Const HKEY_CLASSES_ROOT = &H80000000

Public Const HKEY_CURRENT_USER = &H80000001

Public Const HKEY_LOCAL_MACHINE = &H80000002

Public Const HKEY_USERS = &H80000003

Public Const HKEY_PERFORMANCE_DATA = &H80000004

Public Const HKEY_CURRENT_CONFIG = &H80000005

Public Const HKEY_DYN_DATA = &H80000006

Public Const REG_NONE = 0

Public Const REG_SZ = 1

Public Const REG_EXPAND_SZ = 2

Public Const REG_BINARY = 3

Public Const REG_DWORD = 4

Public Const REG_DWORD_BIG_ENDIAN = 5

Public Const REG_MULTI_SZ = 7

Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long

Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long

Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Public Declare Function SetWindowPos& Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)

'在注册表中添加删除自启动项目的模块

Public Sub kjYx(mark As Integer)

' 定义hKey 为句柄变量、SubKey为注册表RUN项目变量、Exe为程序名变量

Dim hKey As Long, SubKey As String, Exe As String
On Error GoTo handle

Select Case mark

Case 1

'将程序设定成随 Windows 启动而启动

'取程序所在路径,判断是否为根目录并分别加上程序全名并赋值给变量Exe

If Right(App.Path, 1) = "\" Then

Exe = App.Path + App.EXEName ' 根目录情况

Else: Exe = App.Path + "\" + App.EXEName ' 非根目录情况

End If

SubKey = "Software\Microsoft\Windows\CurrentVersion\Run" ' 设置项目

RegCreateKey HKEY_CURRENT_USER, SubKey, hKey ' 取得句柄

RegSetValueEx hKey, App.Title, 0, REG_SZ, ByVal Exe, LenB(StrConv(Exe, vbFromUnicode)) + 1 ' 写入键值

RegCloseKey hKey ' 关闭句柄

Case 0

'将程序设定成不随 Windows 启动而启动

SubKey = "Software\Microsoft\Windows\CurrentVersion\Run" ' 设置项目

RegOpenKey HKEY_CURRENT_USER, SubKey, hKey ' 取得句柄

RegDeleteValue hKey, App.Title ' 删除键值

RegCloseKey hKey ' 关闭句柄

End Select

handle:
End Sub

'调用kjYx 1 为开机运行
'调用kjYx 0 为开机不运行

程序里拷出来的,肯定能用。

在启动/关机里编写脚本也可以,VB也可以啊