GUI程序获取命令行参数

标签: , , ,

在Console程序中可以用main函数中的argc和argv遍历命令行参数。

#include <stdio.h>

int main(int argc, char *argv[])
{
    int i;
    for(i = 0;i < argc;i++)
        printf("%s\n", argv[i]);
    return 0;
}

那么在GUI程序中怎么遍历命令行参数呢?虽然WinMain函数的lpCmdLine参数中传入了程序的命令行参数,但是该参数不包含应用程序名(即main函数中的argv[0]),而且自己解析出每个参数也比较麻烦。

最简单的方法是先用GetCommandLineW函数获取命令行,然后用CommandLineToArgvW函数将命令行转化成C语言main函数argc和argv的形式。

#include <windows.h>
#include <stdio.h>
#include <shellapi.h>

int WINAPI WinMain(HINSTANCE hInstance, 
            HINSTANCE hPrevInstance, 
            LPSTR lpCmdLine, 
            int nShowCmd)
{
    LPWSTR *szArglist;
    int nArgs, i;
    
    szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
    for (i = 0; i < nArgs; i++)
    {
        MessageBoxW(NULL, szArglist[i], L"", 0);
    }
    return 0;
}

只可惜没有CommandLineToArgvA函数,想用ANSI版的话得自己用WideCharToMultiByte函数转换一下。

赞赏

微信赞赏支付宝赞赏

随机文章:

  1. VBS调用WMI搜索文件
  2. Msxml2.XMLHTTP和Msxml2.ServerXMLHTTP的区别
  3. Switch 无法启动软件。 请在HOME菜单中再试一次。
  4. 快捷方式都以IE打开的解决方法
  5. TLI.TLIApplication,被遗忘的COM组件

一条评论 发表在“GUI程序获取命令行参数”上

  1. 比尔盖子说道:

    Linux 上这就容易多了……

留下回复