小编Dan*_*orn的帖子

CreateProcessW 不尊重命令行

我正在尝试在 dll 中实现 CreateProcessW,以便用户可以在单独的进程中启动应用程序。

对于初学者,我正在对代码中的命令进行硬编码,直到我弄清楚为止。

我有

STARTUPINFO si = {sizeof(STARTUPINFO), 0};
si.cb = sizeof(si);
PROCESS_INFORMATION pi = {0};
LPCTSTR AppName=L"c:\\utilities\\depends.exe";
LPTSTR Command = L"c:\\utilities\\tee.exe";
if (CreateProcessW(AppName, Command, 0, 0, 0, CREATE_DEFAULT_ERROR_MODE, 0, 0, &si, &pi)) {
        CloseHandle(pi.hThread);
        CloseHandle(pi.hProcess);
        return GX_RESULT_OK;
    } else {
        .. show error msg
    }
Run Code Online (Sandbox Code Playgroud)

这将启动 Depends,但不会打开 Tee.exe。没有错误,它只是忽略命令行参数。参数是正确的,我可以在运行提示下运行它,它工作正常。如果我将 AppName 留空并指定 Depends.exe 作为命令参数它也可以工作,但如果我指定

LPTSTR Command = L"c:\\utilities\\depends.exe c:\\utilities\\tee.exe";
Run Code Online (Sandbox Code Playgroud)

我收到错误 3:“系统找不到指定的路径”。

此外,通过指定 lpCurrentDirectory 参数,它同样会被忽略。

c++ winapi c++builder c++98

5
推荐指数
1
解决办法
4101
查看次数

标签 统计

c++ ×1

c++98 ×1

c++builder ×1

winapi ×1