先用 cd 命令转到 vb6.0 的安装目录,然后输入 vb6 /make vbp文件全路径 ( /make 可简写为 /m ,如果文件名含空格,文件名要加引号) 就编译成exe ,exe文件默认与vbp文件同目录同名(扩展名不同),如果要修改编译生成的默认exe文件名,
B. VB程序怎么处理命令行参数
PrivateSubForm_Load()
DimAAsString
A=Command
SelectCaseUCase$(A)
Case"INSTALL"
MsgBox"进入安装模式",vbInformation,"命令行测试"
Me.Caption="安装模式"
Case"UNINSTALL"
MsgBox"进入卸载模式",vbInformation,"命令行测试"
Me.Caption="卸载模式"
CaseElse
MsgBoxA,vbInformation,"命令行测试"
EndSelect
EndSub
'比如将编译好的程序Test.exe放入D盘根目录下,然后启动命令提示符,将目录切换到D盘根目录,然后输入“Testinstall”则会自动弹出消息框。
C. VB中的"命令行参数"怎么用
给你做个简单的介绍吧,先做下面的
'添加窗体Form1,然后添加如下代码:
"winmm.dll"Alias"mciSendStringA"(ByVallpstrCommandAsString,,ByValuReturnLengthAsLong,ByValhwndCallbackAsLong)AsLong
PrivateSubForm_Load()
SelectCaseLeft(Command,2)
Case"/o"'表示open,打开光驱
mciSendString"SetCDAudioDoorOpenWait",0&,0&,0&
Case"/c"'表示close,关闭光驱
mciSendString"SetCDAudioDoorClosedWait",0&,0&,0&
EndSelect
UnloadMe
EndSub
将上面的编译成test.exe,放到c:\下,然后打开命令提示符窗口,敲入c:\test.exe /o看看,是不是打开光驱了?再试试c:\test.exe /c
D. VB 可以编写命令行程序么
vb程序是不可能在dos中进行调用的,不过可以在“运行”中调用,程序编写方法正如一楼写的一样。在form_load中用一个字符串型变量接收command(),再根据接收的字符进行相应的处理。
E. vb6怎么在代码中执行编译命令
你说的有点像外*挂中间的脚本,可以让使用者自己编写一段代码,程序可以执行。
但是编译成exe就不现实了,只要能执行脚本不就行了吗?
VB语言可以实现这一功能,VB利用Microsoft Script Control对象可以动态执行(即无需事先编译成EXE)VBS指令,代码如下:
窗体放一个多行文本框和一个按钮。
PrivateSubCommand1_Click()
DimScriptControlAsObject,Psw$
SetScriptControl=CreateObject("MSScriptControl.ScriptControl")
ScriptControl.Language="VBScript"
ScriptControl.Timeout=-1
ScriptControl.AddCodeText1.Text
Psw=ScriptControl.Run("encodePwd")
MsgBoxPsw
EndSub
PrivateSubForm_Load()
Text1.Text="FunctionencodePwd()"&vbCrLf&_
"encodePwd=""这是返回字符串"""&vbCrLf&_
"EndFunction"
EndSub
F. vb怎么做个vb编译器
如果你要自己做程序编译的话很难,就算调用c2.exe和link.exe也没用,因为VB
在调用之前已经在临时目录下生成了一堆看不懂的东西。
但你可以调用VB主程序的命令行来生成程序,如你要生成的程序在D盘根目录,工程文件为
1.vbp那你可以在CMD里打VB6.exe /make D:\1.vbp
具体的可以参照VB6.exe /?
附:
VB的编译过程大致如下,当我们在编辑环境中编写完代码后,VB调用C2将所有的模块(包括CLASS)编译成OBJ文件(能够为机器语言识别的代码)。一下是C2的一些编译参数说明(E文):
- the the name of the prefixed one used for the names of the rowscontaining ' precompilato', one
risen of intermediate tails (from which name of the switch) temporary; these rows are 5 and finish withi suffissi GL, SY, FORMER, IN and DB; they contained are not documented
- f the name of the rows to compile
- W3 warning level 3, level of ' attenzione' dedicating to i warnings
- Gy it qualifies the connection to level of function (function-level linking)
- G5 optimization for the Pentium
- Gs4096 it allows not to insert the code for the control of stack (stack probe) if a function does not
use more than 4096 byte of stack
- dos not documented
- Z1 it removes the name of the bookcase of default from the rows.OBJ
- Fofileobj the name of rows OBJ to generate (rows output)
- Qifdiv it puts in action the corrections for the bug of the division of the Pentium (FDIV bug)
- MILILITER it creates rows eseguibile single-threaded
- basic it indicates the compiler C2 the fact that the compilation it happens for a plan basic
C2完成编译后,VB会调用LINK.EXE将所有的OBJ文件连接成EXE文件,完成编译过程。下面是一段命令行演示如何调用LINK.EXE:
LINK C:\Test\Form1.obj C:\Test\Molo1.obj C:\Test\Progetto1.obj C:\Programmi\Microsoft Visual Studio\VB98\VBAEXE6.lib /ENTRY:__ vbaS /OUT:C:\Test\Progetto1.exe /BASE:0x400000 /SUBSYSTEM:WINDOWS, 4.0 /VERSION:1.0 /DEBUG /DEBUGTYPE:CV /INCREMENTAL:NOT /OPT:REF/MERGE:.rdata =.text /IGNORE:4078
对于我们来说这些参数没有什么意义,用默认的就行了。这段命令行中并没有包括输出函数,如果我们希望输出函数,可以定义一个.def文件,按照格式加入要输出的函数列表,然后在命令行后面加上 “/DEF: 文件名”(当然也可以直接加/ EXPORTS参数),再调用命令行编译,用的denpendency工具查看你就会发现你要输出的函数了。
Def文件格式的定义:
LIBRARY 程序名称
DESCRIPTION "MyDLL - (C) Antonio Giuliana, 2004"
EXPORTS
函数名= ?函数名@函数所在模块名@@AAGXXZ
…
例:
LIBRARY MyDLL
DESCRIPTION "MyDLL - (C) Antonio Giuliana, 2004"
EXPORTS
DllRegisterServer= ?DllRegisterServer@SymExp@@AAGXXZ
DllUnregisterServer= ?DllUnregisterServer@SymExp@@AAGXXZ
注意:函数名和模块名是区分大小写的
我先用Vb编一个截取C2、LINK命令的程序:
C2:
Private Sub Form_Load()
f = UCase$(Left$(Command$, 256))
Open "E:\C2.txt" For Output As #1
Print #1, f
Close
End
End Sub
LINK:
Private Sub Form_Load()
f = UCase$(Left$(Command$, 256))
Open "E:\C2.txt" For Output As #1
Print #1, f
Close
End
End Sub
生成EXE后把VB98下的c2与LINK剪切到别处,在用这两个程序代替。运行VB6.exe,随意打开一个工程,点文件菜单,生成EXE。
不久我编的两个程序就送给我梦寐以求的文件:
E:\C2.txt
-IL "C:\DOCUME~1\ADMINI~1\LOCALS~1\TEMP\VB381884" -F "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\新建文件夹 (2)\FORM1.FRM" -W 3 -GY -G5 -GS4096 -DOS -ZL -FO"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\FORM1.OBJ" -QIFDIV -ML -BASIC
E:\LINK.txt
"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\FORM1.OBJ" "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\LINK.OBJ" "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\VBAEXE6.LIB" /ENTRY:__VBAS /OUT:"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\LINK.EXE" /BASE:0X400000 /SUBS
这两个TXT就是VB送给c2以及LINK的命令。
详细解读如下:
C2.txt
-IL "C:\DOCUME~1\ADMINI~1\LOCALS~1\TEMP\VB381884" -F "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\新建文件夹 (2)\FORM1.FRM"是c2准备处理的两个文件。 -W 3 -GY -G5 -GS4096 -DOS -ZL是c2生成OBJ的格式,后边则是OBJ文件的地址。
LINK.txt
"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\FORM1.OBJ" "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\LINK.OBJ"是源文件。"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\VBAEXE6.LIB"是转换库。后面是EXE文件地址及格式
G. 在VB中,命令行参数和条件编译参数是用来干什么的
条件编译是个不常用的功能,一般只会用在病毒和系统软件的编写中
他的功能是:如果满足程序的条件,则将#if和#else之间的代码编译成可执行文件,如果不满足,则编译#else和#endif之间的代码
这样做的好处是:简化了程序,使得生成的可执行文件更小,而且在病毒编写中可以用这种方法来实现程序的变体
H. VB可以编写软件,那VB又是用什么编写出来的呢
首先概念要搞清楚,VB本身是一种程序设计语言,它并不是“用什么编写出来”的,而是通过人为制定的一些规则、语法等创建的一种语言,就好比现实中的语言,I am a student的意思是“我是个学生”,但如果你规定,xye是“我”,kj是“是”,ds是“一个”,sgtfk是“学生”,那么xye kj ds sgtfk的意思也是“我是个学生”,这样你也就创建了一种语言(当然实际上肯定复杂得多,这里是举个例子)。
而你所说的“可以编写软件”的VB,实际上是指VB的IDE(即集成开发环境),是用于提供VB程序开发环境的应用软件,里面包括了VB代码编辑器、编译器、调试器和图形用户界面等工具及功能。这个IDE应该是用C语言结合汇编语言做出来的,但这其实不重要,因为即使就用VB本身也能做出另一个全新的VB的IDE(不含编译器)来你信不?
IDE并不是VB不可缺少的组成部分,不用IDE,直接用其他文本编辑器(比如记事本)也能编写VB程序代码(包括图形界面)!当然只有真正的高手才会这么做。
编译器才是VB最核心的部分,它可以把VB的源代码编译为exe可执行程序。编译器毫无疑问肯定是用汇编语言做出来的,其他高级语言不可能设计出编译器来,就像人不可能自己生出自己来一样。编译器是独立于IDE的,你可以不用IDE,直接用命令行的方式来编译VB程序。
也就是说,如果你是高高高高手,只需要记事本加上编译器就可以开发VB软件了。所以“VB是用什么编写出来的”这个问题真的不重要(我知道即使回答了你,你接下来会继续问“编写出VB的软件又是用什么编写出来的?”)!
I. 在VB中,命令行参数和条件编译参数是用来干什么的
条件编译
是个不常用的功能,一般只会用在病毒和系统软件的编写中
他的功能是:如果满足程序的条件,则将#if和#else之间的代码编译成可执行文件,如果不满足,则编译#else和
#endif
之间的代码
这样做的好处是:简化了程序,使得生成的可执行文件更小,而且在病毒编写中可以用这种方法来实现程序的变体
J. VB 可以编写命令行程序么
Shell"cmd/cdir>c:dir.txt",vbHide
'其中c:dir.txt的内容就是屏幕的输出结果了,再打开分析就能做一些需要的工作。其它dos命令都可以照此办理。