From 4a6de34a64151aeac74251af97062f6295bee20a Mon Sep 17 00:00:00 2001 From: lifegpc Date: Thu, 8 May 2025 17:09:30 +0800 Subject: [PATCH] add new api --- wchar_util.cpp | 19 +++++++++++++++++++ wchar_util.h | 4 +++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/wchar_util.cpp b/wchar_util.cpp index 35ee8c7..f954d2a 100644 --- a/wchar_util.cpp +++ b/wchar_util.cpp @@ -158,4 +158,23 @@ bool wchar_util::getArgv(char**& argv, int& argc) { void wchar_util::freeArgv(char** argv, int argc) { freePointerList(argv, argc, nullptr); } + +bool wchar_util::getArgv(std::vector& argv) { + auto cmd = GetCommandLineW(); + int argcw = 0; + auto argvw = CommandLineToArgvW(cmd, &argcw); + if (!argvw) return false; + bool ret = true; + for (int i = 0; i < argcw; i++) { + std::wstring s = argvw[i]; + std::string r; + if (!wchar_util::wstr_to_str(r, s, CP_UTF8)) { + ret = false; + break; + } + argv.push_back(r); + } + LocalFree(argvw); + return ret; +} #endif diff --git a/wchar_util.h b/wchar_util.h index 4a68ece..99de1d9 100644 --- a/wchar_util.h +++ b/wchar_util.h @@ -1,6 +1,7 @@ #ifndef _UTIL_WCHAR_UTIL_H #define _UTIL_WCHAR_UTIL_H -#include +#include +#include #if _WIN32 #include #endif @@ -45,6 +46,7 @@ namespace wchar_util { */ bool getArgv(char**& argv, int& argc); void freeArgv(char** argv, int argc); + bool getArgv(std::vector& argv); #endif } #endif