VB命令行参数分隔, 类似C语言中的main(int argc, char* argv[])

 

VB6.0为了提供命令行参数的支持,提供了Command()接口,于是通过 Command() 函数可以得到所有传入的参数,但是很不友好的是,VB的所有参数都被合在了一起,成为了一个字符串,当有多个参数时,要想使用就不那么方便了,于是,于是就有了下面的代码,代码我不记得是来自哪里了,如果你是文章的作者,请通知我一下.@@

复制代码
Option Explicit

Private Declare Function GetCommandLineW Lib "kernel32" () As Long
Private Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long
Private Declare Function CommandLineToArgvW Lib "shell32" (ByVal lpCmdLine As Long, pnNumArgs As Long) As Long
Private Declare Function LocalFree Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Public Function SplitCmd(ByRef Argc As Long, ByRef Argv() As String)
Dim nNumArgs As Long '//命令行参数个数
Dim lpszArglist As Long '//命令行参数数组地址
Dim lpszArg As Long '//命令行各参数地址
Dim nArgLength As Long '//命令行各参数长度
Dim szArg() As Byte '//命令行各参数
Dim i As Long

lpszArglist = CommandLineToArgvW(GetCommandLineW(), nNumArgs)
If lpszArglist Then
Argc = nNumArgs '//输出总个数
ReDim Argv(nNumArgs - 1)
CopyMemory ByVal VarPtr(lpszArg), ByVal lpszArglist, 4 '//得到argv(0)的地址

For i = 0 To nNumArgs - 1
nArgLength = lstrlenW(lpszArg)
ReDim szArg(nArgLength * 2 - 1)
CopyMemory ByVal VarPtr(szArg(0)), ByVal lpszArg, nArgLength * 2
Argv(i) = CStr(szArg)
lpszArg = lpszArg + nArgLength * 2 + 2
Next

Erase szArg
Call LocalFree(lpszArglist)
End If
End Function
复制代码


  调用方式很简单,入口函数 SplitCmd(ByRef Argc As Long, ByRef Argv() As String) ,第一个参数为传入参数:参数的总个数,第二参数是参数数组,需要说明的是,这个函数的返回值同C语言的一样,Argc中至少有一个值,那就是程序本身的路径,Argv(0) 也即为程序本身的路径,下面提供一种使用方法.

复制代码
Option Explicit

Private Sub Form_Load()
Dim Argc As Long, Argv() As String
Dim i As Integer, szCmd As String

Call SplitCmd(Argc, Argv())
For i = 0 To Argc - 1
szCmd = szCmd & i & vbTab & Argv(i) & vbCrLf
Next
MsgBox szCmd
End Sub
复制代码

这样,将得到类似如下的结果:


到此,一切顺利.
女孩不哭(QQ:191035066)@2011-11-13 16:02



 
分类: VB6.0
 
 
 
 
 
 
 
 
 
### 回答1: c语言main函数是程序的入口点,也是程序执行的起点。它是一个特殊的函数,用于接收命令行参数和控制程序的执行流程。main函数的声明形式为int main(int argc, char *argv[])。 其intmain函数的返回类型,用于指定函数执行完毕后的返回值。通常情况下,返回0表示程序执行成功,非零值表示执行失败。 int argc是一个整数参数,表示命令行参数的数量,包括程序本身。它的值至少为1,因为至少会有一个参数指向程序的路径。 char *argv[] 是一个指向字符数组的指针,用于存储命令行参数的值。它是一个数组,每个元素都是一个指向字符串的指针,代表一个命令行参数。 通过命令行参数,我们可以向程序传递一些外部数据,这些数据可以用来指定程序的行为或者提供输入。在main函数,我们可以通过argcargv来获取这些传递的参数。 可以使用argc来确定命令行参数的数量,并通过遍历argv数组来获取每个参数的值。通常情况下,argv[0]保存的是程序的路径,而argv[1]、argv[2]等保存的是传递给程序的其他参数。 例如,命令行输入"program.exe param1 param2",那么argc的值为3,argv[0]的值为"program.exe",argv[1]的值为"param1",argv[2]的值为"param2"。 通过这种方式,我们可以根据传递的命令行参数来动态改变程序的行为,增强程序的灵活性。 ### 回答2: c语言的主函数main通常被设计成以下形式:main(int argc, char *argv[])。这是一个带有参数的函数,其argc代表命令行参数的个数,而argv则是一个指针数组,用来存储每个命令行参数的字符串。 在执行程序时,可以通过命令行输入一些参数来影响程序的行为。比如,执行程序时可以在命令行输入“./program arg1 arg2”,其"./program"是程序的名称,"arg1"和"arg2"是命令行参数argc的值将被设置为命令行参数的个数加1(包括程序名称本身),而argv则会被填充为一个指针数组,每个元素指向一个命令行参数的字符串。 通过使用命令行参数,我们可以在执行程序时传递一些配置信息或数据给程序。在程序可以通过访问argv数组来获取这些参数的值,并根据需要加以处理。这个特性使得我们的程序更加灵活和可配置,能够根据不同的命令行参数执行不同的操作。 需要注意的是,命令行参数的使用需要遵循一定的规则和约定,例如参数的意义和格式需要事先约定好,以便程序正确解析和使用。在实际开发,我们可以使用C语言提供的许多函数和库来处理命令行参数,以方便程序的开发和维护。 ### 回答3: "c语言main(int argc, char *argv[])是C语言的主函数声明。主函数是C程序的入口,程序的执行从主函数开始。主函数的定义有两个参数,分别是argcargvargc是一个整型变量,代表命令行参数的数量。命令行参数是指在命令行执行程序时,跟在程序名后面的参数。例如,如果执行命令`./program arg1 arg2`,那么argc的值将为3,因为有三个参数,包括程序名本身。 argv是一个字符指针数组,用于存储命令行参数的值。每个命令行参数都作为字符串存储在argv数组的一个元素argv[0]存储的是程序名本身,argv[1]存储的是第一个参数,argv[2]存储的是第二个参数,依此类推。 通过使用argcargv,我们可以在C程序获取和处理命令行参数。这在实际开发非常有用,可以在执行程序时传递各种参数,从而根据不同的参数执行不同的操作。 综上所述,c语言main(int argc, char *argv[])是C语言的主函数声明,用于获取和处理命令行参数。"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值