请给我介绍一下“命令行参数”有什么作用?
我看很多VB软件公司要求在sub main()中检查“命令行参数”这有什么作用呢,并请在大家给我详述一个命令行参数的作用,谢谢 问题点数:100、回复次数:22Top
1 楼linucz(masaka)回复于 2003-12-01 02:07:52 得分 0
命令行程序(某些)不带参数运行,那就太愚蠢了
比如ping.exe这个程序,不带参数,你运行它,起什么作用?ping谁呀?
参数是程序的输入的数据,没有输入的数据,程序看上去狠死板,把数据固化到源代码里编译,运行。。基本失去了程序的意义Top
2 楼handysoft(非我不可)回复于 2003-12-01 02:47:37 得分 0
大侠,那能不能举例说明一下命令行参数具体可以作点什么呢?Top
3 楼boydgmx(授人以鱼不如授人以渔(baidu&google))回复于 2003-12-01 08:20:13 得分 20
Option Explicit
Public strCmd As String
Private Sub Form_Load()
Me.Visible = False
strCmd = Command
MsgBox strCmd
Unload Me
End Sub
将上面的代码添加到一个窗体中。
然后编译成一个可执行文件,比如 msg.exe
然后在命令行下执行该文件
C:\>msg.exe "sdfsf"
会看到弹出对话框,然后程序自动退出。Top
4 楼SoHo_Andy(冰)回复于 2003-12-01 08:29:08 得分 20
举个例子说明一下
比如你的应用程序要处理很多个登录的分支,或者处理复杂的用户自定义功能
常见的做法是在程序中通过一些判断或者交互来处理,但通过命令行参数来处理也不错
具体做法就是添加命令行参数“MakeLine”,“LoadData1”啊什么的
在程序中接收到命令行参数解析,然后执行相应初始化功能
Top
5 楼handysoft(非我不可)回复于 2003-12-01 21:54:06 得分 0
谢谢帮助,不过我还是想知道一下,用做的程序可以在DOS下执行吗,但我一般看到的就是在windows下执行,而且直接双击setup后的*.exe就行呀(或是做快捷方式放到桌面上,直接双击它),那怎么能让它加上参数呢Top
6 楼zt31(安全套,我一直用雕牌)回复于 2003-12-01 21:58:17 得分 0
关注ingTop
7 楼a11s(没事情做了)回复于 2003-12-01 22:23:01 得分 0
加参数的方法
1 用鼠标拖,比如记事本程序 (notepad.exe) 把文本文件直接托上去就可以
2 开始-->运行... 你的程序 参数
3 Windows下的MS-DOS方式 或者Win2k的CMDTop
8 楼chenkangli(编程浪子)回复于 2003-12-01 22:29:58 得分 0
也可以这样理解.其实"命令行参数"和函数参数有一样的效果,自己可以体会一下.Top
9 楼handysoft(非我不可)回复于 2003-12-02 12:33:09 得分 0
谢谢大家的不断开导,我现在对命令行参数的意义已经有所了解了,可是还有点搞不清的是这个参数对程序的执行有什么作用呢,比如说:怎么做能让程序(.exe)在没有参数的时候就不能运行,有了这个参数程序又能做些什么?Top
10 楼handysoft(非我不可)回复于 2003-12-02 12:39:34 得分 0
比如说,如下这段代码是用来看有没有命令行参数的,在调用时,如果返回为false,程序可能关闭,可是如果有这个命令行参数又能怎样呢?在sub main中可以用这个命令行做什么呢?
sub main()
If gfncGetParameter(strParm, intParmCnt) <> True Then
Exit Sub
End If
....
end sub
Public Function gfncGetParameter(strParm() As String, intParmCnt As Integer) As Boolean
On Error GoTo gfncGetParameter_ErrHandle
Dim strCmdLn As String
Dim intPos As Integer
Dim intStart As Integer
Dim intCnt As Integer
Dim strTemp() As String
gfncGetParameter = False
strCmdLn = Trim(Command$)
If Len(strCmdLn) = 0 Then
intParmCnt = 0
MsgBox "SYSTEM ERR ! PLEASE CALL SYSTEM OPERATOR.", vbCritical, GSTR_MSG_TITLE
Exit Function
End If
intCnt = 0
intStart = 1
Do
' intPos = InStr(intStart, strCmdLn, vbTab)
intPos = InStr(intStart, strCmdLn, " ")
If intPos = 0 Then
'Only one parameter or last parameter
ReDim Preserve strTemp(intCnt)
strTemp(intCnt) = Mid$(strCmdLn, intStart, Len(strCmdLn))
Exit Do
Else
ReDim Preserve strTemp(intCnt)
strTemp(intCnt) = Mid$(strCmdLn, intStart, intPos - intStart)
intStart = intPos + 1
If strTemp(intCnt) <> "" Then
intCnt = intCnt + 1
End If
End If
If intStart > Len(strCmdLn) Then
Exit Do
End If
Loop Until intPos = 0
For intCnt = 0 To UBound(strTemp)
ReDim Preserve strParm(intCnt)
strParm(intCnt) = strTemp(intCnt)
Next intCnt
' gstrLoginId = strTemp(0)
If UBound(strTemp) = 0 Then
intParmCnt = 1
Else
intParmCnt = UBound(strTemp) + 1
End If
gfncGetParameter = True
Exit Function
gfncGetParameter_ErrHandle:
gfncGetParameter = False
Exit Function
End FunctionTop
11 楼liweida585(high_hand)回复于 2003-12-02 12:57:56 得分 0
a.vbp
shell lw.exe helloworld
___________________________
b.vbp
dim str as string
str=command()
msgbox str
________
"helloworld"Top
12 楼lnhsgj(黑鹰)回复于 2003-12-02 12:58:38 得分 0
命令行参数,是程序运行时所需数据的一种获得方法。
“怎么做能让程序(.exe)在没有参数的时候就不能运行”
不加参数就不运行,这是不可能的。
运行时有没有加参数,只能在程序启动后由程序来判断。
当你的程序得不到这个数据时,直接退出就是了。
“有了这个参数程序又能做些什么?”
这个问题很有意思。
我帮不了你。Top
13 楼handysoft(非我不可)回复于 2003-12-02 13:28:55 得分 0
“有了这个参数程序又能做些什么?”
就是可以举个例子说一下嘛,比如你们大侠通常用这个参数做什么呢?Top
14 楼liberte()回复于 2003-12-02 13:44:22 得分 0
gzTop
15 楼lnhsgj(黑鹰)回复于 2003-12-02 19:13:07 得分 10
WINDOWS时代了,现在已经很少有程序需要加参数运行了。
除非是那些无界面的或常驻内存后台程序。Top
16 楼mingtian2008(明天)回复于 2003-12-02 19:35:34 得分 0
upTop
17 楼a11s(没事情做了)回复于 2003-12-03 11:05:54 得分 50
最简单的例子
屏幕保护程序,不信的话你可以试试,windows给你一些参数告诉你如何运行屏幕保护
再就是有一些游戏,如果加上特定的参数,就可以使用秘籍
以及某些软件软件加上/debug可以进入调试模式
所以说,即使现在到了windows时代,那些参数也还是有一些用途的Top
18 楼handysoft(非我不可)回复于 2003-12-04 20:03:51 得分 0
呵,谢谢,我对/debug这个挺感兴趣的,能具体说说吗,如VB怎么能让app.exe /debug进入VB的调试模式的呢,还可以用命令行参数做点什么呢,大家多说说。Top
19 楼simanh()回复于 2003-12-04 20:17:33 得分 0
upTop
20 楼snowflake310(猫猫)回复于 2003-12-04 21:21:33 得分 0
upTop
21 楼jpinglee(想去海边)回复于 2003-12-04 22:06:17 得分 0
命令行参数
决定 Visual Basic 是编译运行程序、编译生成可执行 (.exe) 文件或 ActiveX 的 DLL (.dll),还是设置该命令函数程序所返回的命令行的参数部分。
语法
vb6[.exe] [[{/run | /r} projectname] [[{/d compileconst}] {/make | /m } projectname] [{/makedll | /l} projectname] {/cmd argument | /c argument}][{/runexit} projectname][{/m} or {/runexit} projectname /out filename}][{/m}][/sdi] or [/mdi]
命令行各开关语法部分是:
参数 描述
projectname 工程文件名 (.vbp)。
/run 或 /r 告诉 Visual Basic,使用存储在位于“工程属性 (J)”对话框的“生成”选项卡“命令行参数”字段中的参数,编译运行 projectname。该命令允许运行多个工程。用 projectgroupname 替换 projectname。
/make 或 /m 告诉 Visual Basic,使用已有的 APP 对象的 Path、EXEName 和 Title 属性设置值,编译 projectname 并生成一个可执行 (.exe) 文件。该命令允许由多个工程编译和生成一个可执行文件。用 projectgroupname 替换 projectname。
/makedll 或 /l 告诉 Visual Basic,编译 projectname,并由它生成一个进程内 ActiveX 服务器 (.dll) 文件。
/d 或 /D 告诉 Visual Basic,在用 /make 开关生成 .EXE 或用 /makedll 开关生成 ActiveX 的 DLL 时,用作条件编译常数那些值。
compileconst 用在工程文件中条件编译常数的名称和值。
/cmd 或 /c 将参数放入“命令行参数”字段,该字段位于“工程属性(J)”对话框的“生成”选项卡。使用该参数时,该开关必须置于命令行的最后。
/runexit 告诉 Visual Basic,运行 projectname。若文件由于某些原因运行中被修改,则所有改变将被忽略,并且在返回设计模式时不出现对话框。
filename 当使用 /m 或 /runexit 选项生成可执行文件时,用来接受错误信息的文件名。
/out 当使用 /m 或 /runexit 选项生成时,用来指定接受错误信息的文件。文件中第一个出现的错误带有其它状态信息。如果没有使用该选项,则命令行生成的错误将显示在信息框中。该选项在编译多个工程时十分有用。
/? 列出可用的命令行参数。
/sdi 将 Visual Basic 环境改变为 SDI(单文档界面)模式。如果不做改变,则 Visual Basic 将一直保持在 SDI 模式。如果想改变为 MDI 模式,可以使用 /mdi 参数,也可以通过清除位于“选项”对话框的“高级”选项卡的“SDI 开发环境”选项来完成。
/mdi 按 MDI(多文档界面)模式打开 Visual Basic。如果不做改变,Visual Basic 将一直保持在 MDI 模式。如果想改变为 SDI 模式,可以使用 /sdi 参数,也可以通过选定位于“选项”对话框的“高级”选项卡中“SDI 开发环境”选项来完成。MDI 是 Visual Basic 的缺省模式。
使用这些参数时,它们必须在命令行中以运行 Visual Basic。例如,可以从 Windows 95“开始”菜单的“运行”命令的“运行”对话框中使用它们。下面是一个运行 Visual Basic 的有效命令行示例,它装入指定的工程文件并使其运行:
C:\vb6.exe /r MyProj.vbp
Top
22 楼doudou8090(初步)回复于 2003-12-04 22:10:51 得分 0
呵,大家真是热情,
心里暖和的很,
ITop




