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

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

Option Explicit

Private Declare Function GetCommandLineW Lib "kernel32" () As LongPrivate Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As LongPrivate Declare Function CommandLineToArgvW Lib "shell32" (ByVal lpCmdLine As Long, pnNumArgs As Long) As LongPrivate Declare Function LocalFree Lib "kernel32" (ByVal hMem As Long) As LongPrivate 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 IfEnd 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 szCmdEnd Sub

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

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

分类: VB6.0

时间: 2024-08-26 17:10:31

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

解决 main(int argc, char** argv)这种情况下通过命令行传参,改为main函数里面给定参数。

本文是原创文章,未经允许,请勿转载. 原来程序中是通过运行exe,然后加上参数,然程序运行起来的.也就是main(int argc, char** argv)这里是通过argv参数是从命令行 传过来的.现在想改为在main函数里面给出这个参数,其实我做的是load_image(img, argv[1]);这个函数.然后我希望argv[1]参数是从txt文本 取到的.所以我写了如下程序 ///////////////////// 把1.txt文件中的所有的图片的路径都push_bach到image

main()函数的输入参数 main(int argc, char** argv)

一般简单的C++程序,main函数的写法都是 int main() {... ; return 0;},但是,如果在运行程序时需要有参数输入,可以是使用将主函数写成int main(int argv, char** argv)的形式. 如测试程序如下: #include <iostream> using namespace std; int main(int argc, char** argv) { for(int i = 0; i<argc; i++) cout << ar

[c language] getopt 其参数optind 及其main(int argc, char **argv) 参数解释

getopt被用来解析命令行选项参数.#include <unistd.h> extern char *optarg; //选项的参数指针extern int optind, //下一次调用getopt的时,从optind存储的位置处重新开始检查选项. extern int opterr, //当opterr=0时,getopt不向stderr输出错误信息.extern int optopt; //当命令行选项字符不包括在optstring中或者选项缺少必要的参数时,该选项存储在optopt

int main(int argc,char *argv[])参数的应用

#include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> //a.out src.txt dest.txt //argv[0] int main(int argc,char *argv[]) { char src[20] = {0}; char dest[20] = {0}; int i; for(i

main函数的参数(int argc,char *argv[])

一般的main函数都是不带参数的,因此main 后的括号都是空括号.实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数.C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv.因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组.加上形参说明后,main函数的函数头可以写为: main (int argc,char *argv[])

第33课 main函数与命令行参数

1. main函数的概念 (1)C语言中main函数称之为主函数 (2)一个程序是从main函数开始执行的 [编程实验]main函数的原型究竟是什么 //以下四个main函数都是合法的 //第1种 //main() //{ //} //第2种 //void main() //{ //} //第3种:——标准的入口函数 int main() { return 0; } //第3种:——标准的入口函数 //int main() //{ // //没写返回值 //} [思考]为什么编译器支持那么多种不

第52课 命令行参数的应用

1.主窗口的状态参数 (1)主窗口的状态参数:如位置.大小 (2)应用程序退出的过程 ①收到关闭事件 ②执行关闭事件处理函数(在这里进行主窗口的状态保存) ③主窗口从屏幕上消失 ④主窗口的析构函数的执行 (3)保存主窗口状态参数的时机 ①一般而言:应用程序收到关闭事件时进行状态参数的保存 ②Qt的解决方案:重写关闭事件处理函数并在其中保存状态参数 2. 命令行参数的应用 (1)每个应用程序都能够接收命令行参数. (2)命令行参数传递到应用程序 ①传统方式:在命令行启动GUI程序时传递参数,如no

【转】getopt分析命令行参数

(一) 在Linux中,用命令行执行可执行文件时可能会涉及到给其加入不同的参数的问题,例如: ./a.out -a1234 -b432 -c -d 程序会根据读取的参数执行相应的操作,在C语言中,这个功能一般是靠getopt()这个函数,结合switch语句来完成的,首先来看下面的代码: #include <stdio.h>#include <unistd.h> int main(int argc,char *argv[]){  int ch;  opterr=0;    whil

(二)NS3如何编译、运行脚本和 Command Line命令行参数设置

二.编译.运行脚本和Command Line命令行参数设置 7. 编译和运行脚本主要步骤 1) 将编写的脚本复制到ns-3.22/scratch目录下(可以在ubuntu窗口界面直接复制) 进入ns3目录: /ns-3.22 $ cp examples/tutorial/first.cc  scratch/myfirst.cc将脚本复制到scratch目录下 2) 构建(编译) $ ./waf 3) 运行 $ ./waf --run scratch/myfirst (可能会有运行权限问题,可在r