- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个小的 win32 程序,它使用给定的 lpCmdLine
调用 CommandLineToArgvW
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
(void)hInstance;
(void)hPrevInstance;
(void)nCmdShow;
int argc;
LPTSTR* argv = CommandLineToArgvW(lpCmdLine, &argc);
MessageBoxW(0, lpCmdLine, TEXT("lpCmdLine"), MB_OK );
for(int i=0; i<argc;++i){
MessageBoxW(0, argv[i], TEXT("argv"), MB_OK );
}
return 0;
}
我观察到的奇怪的事情是:
lpCmdLine
是空字符串,CommandLineToArgvW
返回 1 个参数 - 可执行路径。CommandLineToArgvW
返回准确数量的参数,没有可执行文件我找不到这种奇怪行为的记录。
我错过了什么?我是否以意外的方式使用了该命令?
最佳答案
根据 CommandLineToArgvW()
:
lpCmdLine
Type:
LPCWSTR
Pointer to a null-terminated Unicode string that contains the full command line. If this parameter is an empty string the function returns the path to the current executable file.
这意味着 CommandLineToArgvW()
仅当 lpCmdLine
参数为 null 或如果它显式包含可执行文件名称时才返回调用可执行文件名称.
请注意,CommandLineToArgvW()
需要完整的命令行。但是,根据 WinMain()
:
lpCmdLine
Type:
LPSTR
The command line for the application, excluding the program name. To retrieve the entire command line, use the
GetCommandLine
function.
因此,当您执行不带参数的程序时,WinMain
的lpCmdLine
参数为空,CommandLineToArgvW()
仅返回可执行文件姓名。但是,如果您使用参数执行程序,lpCmdLine
参数不是空的,但不包含可执行文件名称,因此 CommandLineToArgvW()
仅返回参数而没有可执行文件名称。
因此,您需要按照 WinMain()
文档中的说明进行操作,并使用 GetCommandLine()
而不是 lpCmdLine
。 CommandLineToArgvW()
文档中也说明了这一点:
The
GetCommandLineW
function can be used to get a command line string that is suitable for use as thelpCmdLine
parameter.
所以,改用这个:
LPWSTR* argv = CommandLineToArgvW(GetCommandLineW(), &argc);
关于windows - CommandLineToArgvW 怪癖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55544279/
我有一个小的 win32 程序,它使用给定的 lpCmdLine 调用 CommandLineToArgvW int APIENTRY _tWinMain(HINSTANCE hInstance,
我有一个小的 win32 程序,它使用给定的 lpCmdLine 调用 CommandLineToArgvW int APIENTRY _tWinMain(HINSTANCE hInstance,
解析路径中包含空格的进程的命令行参数时,路径会被CommandLineToArgvW分割成多段。 在所有 Windows 的 C: 驱动器上都存在一个名为“Program Files”的文件夹。 ..
我正在寻找与 Windows 的 CommandLineToArgvW 等效的功能. 我有一个字符串,我想按照 bash 的方式完全分解它,包括所有极端情况——即考虑单引号和双引号、反斜杠等,所以拆分
我正在研究一些路径解析 C++ 代码,为此我一直在试验许多 Windows API。 PathGetArgs/PathRemoveArgs 和稍微按摩过的 CommandLineToArgvW 之间有
我是一名优秀的程序员,十分优秀!