c++ - 修改命令行参数

标签 c++ winapi command-line

我有一个 Win32 C++ 应用程序,我需要修改应用程序中的命令行参数。具体来说,我想以 GetCommandLineW() 返回我的新参数的方式编辑命令行参数。

信不信由你,这是可行的(因为我们有一个指向字符数组的非常量指针):

LPTSTR args = GetCommandLineW();
LPTSTR new_args = L"foo --bar=baz";
wmemcpy(args, new_args, lstrlenW(new_args));

// ...
LPTSTR args2 = GetGommentLineW(); // <- equals "foo --bar=baz"

但我不知道 Windows 为 GetCommandLineW() 提供的 LPTSTR 分配了多少内存。

还有其他方法吗?或者有谁知道是否为命令行参数分配了可预测的内存量?

最佳答案

GetCommandLineW() 不分配任何内存。它只是返回一个指向缓冲区的指针,该缓冲区由操作系统在进程的 PEB 中分配。创建进程时的结构。该缓冲区在进程的生命周期内存在。

关于c++ - 修改命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23125801/

相关文章:

c++ - omp 临界区后是否存在隐式 Barrier

c++ - 具有最低 cpp 标准的 cmake add_library

windows - 在不使用 FindFirstFile 的情况下迭代目录中的文件

python - 使用 setuptools 运行额外的卸载脚本

php - 如何设置 PHP 命令行的最大调试/日志级别输出?

windows-7 - 如何在Windows命令提示符下同时启动2个程序

c++ - 在 C++ 中创建一个可以保存不同类对象的数组

C++20 std::invocable 语法

c# - 从任何类型的文档中获取文本

windows - 扩展我没有源代码的现有程序的功能