gpt4 book ai didi

c++ - 将字符串数组传递给多个进程的 for 循环中的 CreateProcess

转载 作者:太空宇宙 更新时间:2023-11-04 02:13:15 26 4
gpt4 key购买 nike

我不得不承认,这段代码中的大部分 win32 api 东西我都不熟悉。话虽如此,我想将我所知道的融入我的学习过程中。我正在尝试创建一个 for 循环,该循环将 CreateProcess 多次,每次使用不同的参数。在 Visual Studio 中出现编译错误:

source.cpp(138): error C3867: 'std::basic_string<_Elem,_Traits,_Alloc>::c_str': function call        missing argument list; use '&std::basic_string<_Elem,_Traits,_Alloc>::c_str' to create a     pointer to member
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Alloc=std::allocator<char>
1> ]

运行以下代码时:

std::string arrString[3] = {"dir","cd ..","dir"};
int i;
LPWSTR cmd =L"cmd";

for(i=0; i<3; i++)
{
STARTUPINFO info={sizeof(info)};
PROCESS_INFORMATION processInfo;
if (CreateProcess(cmd, arrString[i].c_str, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo))
{
::WaitForSingleObject(processInfo.hProcess, INFINITE);
CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);
}

我的方向是否正确?

编辑:

            std::string arrString[3] = {"cmd","cmd","cmd"};
int i;
LPWSTR cmd =L"cmd";

for(i=0; i<3; i++)
{
STARTUPINFO info={sizeof(info)};
PROCESS_INFORMATION processInfo;
vector<wchar_t> cmdline(arrString[i].begin(), arrString[i].end());
CreateProcessW(cmd, &cmdline[0], NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo);
::WaitForSingleObject(processInfo.hProcess, INFINITE);
CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);

}

最佳答案

在这一行

if (CreateProcess(cmd, arrString[i].c_str, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo))

当你想写 arrString[i].c_str() 时,你写了 arrString[i].c_str

关于c++ - 将字符串数组传递给多个进程的 for 循环中的 CreateProcess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10953659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com