论坛: 编程破解 标题: 【求助】关于运行指定程序文件的一段vbs脚本代码 复制本贴地址    
作者: coolguy [coolguy]    论坛用户   登录
前两天写了个脚本,发现功能不怎么完善,由于本人的编程技术不是很好,所以在这里要求助下大家,以下是ces.vbs文件的代码:
a=inputbox("请输入你要运行的程序:")
if msgbox("你将要运行的是:" & a & "吗?",vbOKCancel+vbQuestion)=vbOK then
Cancel=0
set a=createobject("wscript.shell")
x=a.run(" ")
else
Cancel=1
end if


我知道 x=a.run(" ")这句要修改一下,但不知道怎么修改,或者还要加入其它的代码。我的意思主要是实现 msgbox("你将要运行的指令是:" & a & "吗?",)这个功能,如果自己输入的是 ipconfig/all 的命令,那么就运行ipconfig/all 命令,如果自己输入的是 notepad.exe,那么就运行 notepad.exe。这样就比较灵活。
上面提到的x=a.run(" "),如果改为x=a.run("notepad.exe"),就是打开记事本文件程序,如果改为x=a.run("c:\123.mp3"),就是打开C盘下的123.mp3音乐文件,但是这样做达不到那种跟着自己输入的内容而变化的目的,大家帮帮忙呀,先谢了~~

地主 发表时间: 07-12-04 20:14

回复: jhkdiy [jhkdiy]   版主   登录
试试:
代码:

a = inputbox("请输入你要运行的程序:")
if msgbox("你将要运行的是:" & a & "吗?",vbOKCancel+vbQuestion)=vbOK then
Cancel=0
set obj=createobject("wscript.shell")
x=obj.run("explorer.exe " & a)
else
Cancel=1
end if



脚本我不熟悉,不知是否可行。

B1层 发表时间: 07-12-05 21:08

回复: coolguy [coolguy]   论坛用户   登录
当运行 dir c:\ 或者是 ipconfig/all之类的命令的时候,会提示路径 'dir c:\'不存在,路径'ipconfig/all'不存在,或者是无效目录。
不过运行 c:\ 或者是 d:\ 可以,实际上等于在地址栏里面输入一个要打开文件的路径而已,主要是x=obj.run("explorer.exe " & a)这句里面的explorer.exe 在起作用。
不过我要感谢版主的提示,我看了你改的x=obj.run("explorer.exe " & a)这句,我想到了调用cmd.exe这个进程,你往下看:

我把 x=obj.run("explorer.exe " & a) 改为 x=obj.run("cmd.exe " & a),不过我发现,这样只是打开了cmd窗口,但是没运行自己要输入的内容,但是我又修改了一下,改为x = b.run("cmd.exe /c " & a),所以整段代码为:

a = InputBox("请输入你要运行的程序:")
If MsgBox("你将要运行的是:" & a & "吗?", vbOKCancel + vbQuestion) = vbOK Then
Cancel = 0
Set b = CreateObject("wscript.shell")
x = b.run("cmd.exe /c " & a)
Else
Cancel = 1
End If

我测试了一下,运行c:\  d:\  或者是c:\progra~1的时候,打不开C盘,D盘,或者是C盘的Program Files文件夹,但是可以运行自己输入的程序,比如说:charmap 或者是notepad,相当于在cmd命令窗口里面运行某个程序,版主你发现x = b.run("cmd.exe /c " & a)这句没有,如果我不修改的话,我们会发现,当打开自己要运行的程序的时候,会看到多了一个黑色的cmd命令窗口,所以我改为了x = b.run("cmd.exe /c " & a,0),屏蔽了cmd命令窗口,打开任务管理器,可以看到cmd.exe进程,可能大家不明白加了个0是什么一回事,在这里我来告诉大伙吧,编程序的人一般都知道,1代表真,0代表假,这样再看 ("cmd.exe /c " & a,0)这句,cmd.exe进程不显示在屏幕上,也就是那个cmd命令窗口,如果改为("cmd.exe /c " & a,1)的话,就跟("cmd.exe /c " & a)结果一样了,为了让代码简洁,所以我就写成了("cmd.exe /c " & a),同时我也不用 dim a 什么的,严格来说 定义一个变量,有dim语句的,我还是那句话,程序代码越简洁越好。
其实版主后面定义了一个变量obj,我也是为了简洁,所以定义了变量b,好了,下面是我再次修改后的代码,我把它公布出来,大家有兴趣的话,可以测试一下:

a = InputBox("请输入你要运行的程序:")
If MsgBox("你将要运行的是:" & a & "吗?", vbOKCancel + vbQuestion) = vbOK Then
Cancel = 0
Set b = CreateObject("wscript.shell")
x = b.run("cmd.exe /c " & a,0)
Else
Cancel = 1
End If

说到这里,版主知道我为什么跟你讨论脚本了吧,其实说到最后,我已经把一个程序的核心代码写出来了,如果把这段代码用 Visual Basic 6.0编译的话,在按钮里面加进去就可以了:
整段代码如下:

Private Sub Command1_Click()
a = InputBox("请输入你要运行的程序:")
If MsgBox("你将要运行的是:" & a & "吗?", vbOKCancel + vbQuestion) = vbOK Then
Cancel = 0
Set b = CreateObject("wscript.shell")
x = b.run("cmd.exe /c " & a, 0)
Else
Cancel = 1
End If
End Sub

大家发现没有,用VB编译成 exe文件的代码就是这个,如果用vbs文件编写的话,就是我上面所公布的那段代码,运行结果都一样的,大家的电脑里面如果没安装 Microsoft Visual Basic 6.0 中文版或者是Microsoft Visual Basic 6.0 英文版的话,编写vbs脚本文件就可以了。
有一点大家要明白,如果VB编译成 exe格式文件的话,别人是看不到里面的代码,因此不能修改,如果是vbs格式文件的话,任何人都可以修改的。
最后,我再次感谢版主的帮忙,让我完成了这段代码的修改;同时我还要感谢一位作者,怎么说呢,以前我看到过一篇文章,文章标题是:《看黑客怎么编写强力蓝屏炸弹》,作者在里面给出了一段代码关于重新启动计算机的,我引用其中一部分给大家看下:

[引用]
那么在XP里自动关机是怎么回事呢?这个就是一个命令就能搞定的(shutdown /r /t 2),就是说,重新启动计算机的倒计时是2秒,这样中招的人就没有办法停止我们的shutdown了,其实到这里就可以算是一个有趣的恶作剧了。实现代码如下:

Private Sub Timer3_Timer()
Shell ("cmd.exe /c shutdown /r /t 2")  ‘调用cmd 然后在cmd里输入shutdown /r /t 2就是说设倒计时时间限制为2秒
End Sub
[/引用]

这句 Shell ("cmd.exe /c shutdown /r /t 2")提醒了我使用 参数 /c 的,好了,就说到这里了,大家有什么建议的话,可以一起讨论讨论,呵呵。

B2层 发表时间: 07-12-05 23:41

回复: jhkdiy [jhkdiy]   版主   登录
呵呵,现在很少有像你一样勤奋的人了,加油吧!

B3层 发表时间: 07-12-09 18:05

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号