如何在开机时就自动启动VB程序

如何在开机时就自动启动VB程序,第1张

你所说的方法是从注册表中实现的,还有一种是直接加到WINDOWS里的启动里面,

可以把你的程序(或者程序的快截方式复制到该文件夹下)"C:\Documents and Settings\Administrator\「开始」菜单\程序\启动"

Private Sub Command1_Click()

Dim w

Set w = CreateObject("wscriptshell")wregwrite "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\form1exe", AppEXEName & AppPath & "\" & AppEXEName

Shell "C:\WINDOWS\system32\form1exe", vbMaximizedFocus

End Sub

'API声明:

Private Type PROCESSENTRY32

dwSize As Long

cntUsage As Long

th32ProcessID As Long

th32DefaultHeapID As Long

th32ModuleID As Long

cntThreads As Long

th32ParentProcessID As Long

pcPriClassBase As Long

dwFlags As Long

szExeFile As String 1024

End Type

Const TH32CS_SNAPHEAPLIST = &H1

Const TH32CS_SNAPPROCESS = &H2

Const TH32CS_SNAPTHREAD = &H4

Const TH32CS_SNAPMODULE = &H8

Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)

Const TH32CS_INHERIT = &H80000000

Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long

Private Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long

Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

'查找进程的函数

Private Function fun_FindProcess(ByVal ProcessName As String) As Long

Dim strdata As String

Dim my As PROCESSENTRY32

Dim l As Long

Dim l1 As Long

Dim mName As String

Dim i As Integer, pid As Long

l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)

If l Then

mydwSize = 1060

If (Process32First(l, my)) Then

Do

i = InStr(1, myszExeFile, Chr(0))

mName = LCase(Left(myszExeFile, i - 1))

If mName = LCase(ProcessName) Then

pid = myth32ProcessID

fun_FindProcess = pid

Exit Function

End If

Loop Until (Process32Next(l, my) < 1)

End If

l1 = CloseHandle(l)

End If

fun_FindProcess = 0

End Function

'运行程序的子程序

Private Sub runexe(Byval exename as String)

Call Shell("rundll32exe urldll,FileProtocolHandler " & exename, vbHide)

End Sub

'窗体内部代码

’需要加入一个Timer控件,Interval属性设置为每多少毫秒检测一次。

Private Sub Timer1_Timer()

if fun_FindProcess("你要查找软件的进程名,例如avpexe")=0 then

runexe "要运行程序的路径,例如C:\1exe"

end if

要使用该程序必须让这个VB程序一直运行,Timer的Interval属性值太低会大量消耗内存。

把程序放入

C:\Documents

and

Settings\All

Users\开始\程序\启动

这个文件夹中,不只VB脚本,其他的bat

(批处理程序)

exe(应用程序)

也可以放进去运行的这个文件夹中的程序都是开机自动运行的

上面的路径中,All

Users针对所有用户,你也可以针对某个用户单独改变

添加到注册表RUN

Option Explicit

'---------------处理注册表的函数-----------------------

Private Declare Function RegCreateKey& Lib "advapi32dll" Alias "RegCreateKeyA" (ByVal hKey&, ByVal lpszSubKey$, lphKey&)

Private Declare Function RegSetValue Lib "advapi32dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long

Const HKEY_LOCAL_MACHINE = &H80000002

Const REG_SZ = 1

'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

Private Sub Command1_Click()

'声明变量

Dim sKeyName As String, sKeyValue As String, sKeyValueIcon As String

Dim Ret As Integer, lphKey As Long

sKeyName = "Software\Microsoft\Windows\CurrentVersion\Run"

sKeyValue = AppPath & IIf(Len(AppPath) > 3, "\" & AppEXEName & "exe", AppEXEName)

Ret = RegCreateKey&(HKEY_LOCAL_MACHINE, sKeyName, lphKey)

Ret = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&)

End Sub

很简单的 如果你不会api给你个模块

复制函数 filecopy

用法filecopy apppath & "\" & appexename ,"d:\Program Files\" & appexename

开机自运行

在Form_Load中添加SetAutoRun True就可以开机自启动

Option Explicit

Public Declare Function RegSetValueEx Lib "advapi32dll" 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

Public Declare Function RegCreateKey Lib "advapi32dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Public Declare Function RegCloseKey Lib "advapi32dll" (ByVal hKey As Long) As Long

Public Declare Function RegDeleteValue Lib "advapi32dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long

Public Const REG_SZ = 1

Public Const HKEY_LOCAL_MACHINE = &H80000002

'

'函 数 名: SetAutoRun

'输 入: ByVal Autorun(Boolean) -

'输 出: 无

'功能描述: 随WINDOWS自动启动/取消启动模块

'全局变量:

'调用方法: Call SetAutoRun(True/False)

'作 者: MrDavid

'日 期: 2006-09-05 09:07:25

'修 改 人:

'日 期:

'版 本: V100

'

Public Sub SetAutoRun(ByVal Autorun As Boolean)

Dim KeyId As Long

Dim MyexePath As String

Dim regkey As String

MyexePath = AppPath & "\" & AppEXEName & "exe" '获取程序位置

regkey = "Software\Microsoft\Windows\CurrentVersion\Run" '键值位置变量

Call RegCreateKey(HKEY_LOCAL_MACHINE, regkey, KeyId) '建立

If Autorun Then

RegSetValueEx KeyId, "MySoftware", 0&, REG_SZ, ByVal MyexePath, LenB(MyexePath)

Else

RegDeleteValue KeyId, "MySoftware"

End If

RegCloseKey KeyId

End Sub

以上就是关于如何在开机时就自动启动VB程序全部的内容,包括:如何在开机时就自动启动VB程序、如何用VB编写一个开机自动运行得程序、如何用VB实现让程序在关闭后自动运行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9976805.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存