
给你提供我用到的代码:
'初始化全局变量
Option Explicit
Public pathini As String
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 "advapi32dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegCreateKey Lib "advapi32dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegCloseKey Lib "advapi32dll" (ByVal hKey As Long) As Long
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
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
Declare Function RegDeleteValue Lib "advapi32dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
'在注册表中添加删除自启动项目的模块
Sub Main()
' 定义hKey 为句柄变量、SubKey为注册表RUN项目变量、Exe为程序名变量
Dim hKey As Long, SubKey As String, Exe As String
'将程序设定成随 Windows 启动而启动
'取程序所在路径,判断是否为根目录并分别加上程序全名并赋值给变量Exe
If Right(AppPath, 1) = "\" Then
Exe = AppPath + AppEXEName + "exe" ' 根目录情况
Else: Exe = AppPath + "\" + AppEXEName + "exe" ' 非根目录情况
End If
SubKey = "Software\Microsoft\Windows\CurrentVersion\Run" ' 设置项目
RegCreateKey HKEY_LOCAL_MACHINE, SubKey, hKey ' 取得句柄
RegSetValueEx hKey, "时间助手", 0, REG_SZ, ByVal Exe, LenB(StrConv(Exe, vbFromUnicode)) + 1 ' 写入键值
RegCloseKey hKey ' 关闭句柄
End Sub
自己看吧,很简单的,修改一下就可以用了
1 新建安装部署项目
打开VS2005,点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目),然后点击确定。
2 安装向导
关闭后打开安装向导,点击下一步,或者直接点击完成。
3 开始制作
安装向导完成后即可进入项目文件夹:
双击"应用程序文件夹"在右边的空白处右击,选择添加->文件,将你的做的应用程序的可执行文件和相应的类库和组件添加进来。然后右击你的文件,创建快捷方式,然后把快捷方式分别复制或剪切到左边的"用户的'程序'菜单"和"用户桌面"中。这样安装程序安装完成后会在 "开始->所有程序"和"桌面"上生成程序的快捷方式。也可以直接在"用户的'程序'菜单"和"用户桌面"相应目录下新建快捷方式,然后定位到你的文件。
然后右击左边的"应用程序文件夹"打开属性对话框:将属性中的"DefaultLocation"的路径中的"[Manufacturer]"去掉,不然的话做好的安装程序默认安装目录会是"C:\Program Files\你的用户名\安装解决方案名称";
然后打开解决方案管理器,右击你的解决方案名称,选择属性:打开的属性页中,选择"系统必备", 在打开的系统必备页中,在"指定系统必备安装组件的位置"中选中如下选择项:从与我的应用程序相同的位置下载系统必备组件。选上以后,在生成的安装文件包中包含NetFramework组件 。好了,这样就完成99%了,然后点击"生成->生成解决方案",生成成功!
我以前参考过的,希望对你有帮助。
>
新建两个 label1 的组,一个是 label1(0) 另一个是 label1(1)
新建三个 command
新建一个 timer代码如下:
Dim dd As Integer
Dim ff As Boolean
Private Sub Command1_Click()
Timer1Enabled = False
Timer1Interval = 3000
Timer1Enabled = True
ff = True
Label1(1)Caption = "!"
Label1(1)ForeColor = &HFF
Command2Visible = False
Command1Visible = False
Command3Visible = True
End Sub
Private Sub Command2_Click()
dd = dd + 1
Select Case dd
Label1(1)Caption = "离关机还有 " & 65 - dd & " 秒。"
End Select
End Sub
Private Sub Command3_Click()
ff = True
End
End Sub
Private Sub Form_Load()
Command3Visible = False
dd = 0
ff = False
End Sub
Private Sub Form_Unload(Cancel As Integer)
If Not (ff) Then
Cancel = True
End If
End Sub
Private Sub Timer1_Timer()
If ff Then End
If dd < 65 Then
dd = dd + 1
Label1(1)Caption = "离关机还有 " & 65 - dd & " 秒。"
Else
Shell "shutdown -s -t 0"
ff = True
End If
End Sub 编写好后 把该VB程序放到 开始菜单-程序-启动 里面 就行了
把程序放入
C:\Documents and Settings\All Users\开始\程序\启动
这个文件夹中,不只VB脚本,其他的bat (批处理程序) exe(应用程序) 也可以放进去运行的这个文件夹中的程序都是开机自动运行的
上面的路径中,All Users针对所有用户,你也可以针对某个用户单独改变
'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属性值太低会大量消耗内存。
以上就是关于VB开机自动运行代码全部的内容,包括:VB开机自动运行代码、vb.net做安装包,安装后自动运行程序、VB代码:让电脑开机自动运行EXE程序,运行EXE后,再自动执行关机命令…如此反复…求代码…并做相应解释等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)