标题: GUI程序获取命令行参数
作者: Demon
链接: https://demon.tw/programming/gui-command-line.html
版权: 本博客的所有文章,都遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议条款。
在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函数转换一下。
赞赏微信赞赏支付宝赞赏
随机文章:
Linux 上这就容易多了……