对Win32 CreateProcess的困惑

时间:2010-07-30 08:10:20

标签: c++ winapi

我对前2个参数,模块和命令行感到困惑。我发现除非我填充它不能正常工作,否则文档似乎没有说明。

我想调用“testApp.exe param1 = 123”

我找到的唯一方法是:

CreateProcess("testApp.exe","testApp.exe param1=123",...

我认为其中任何一个都应该有效,但到目前为止还没有运气:

CreateProcess("testApp.exe","param1=123",...
CreateProcess(NULL,"testApp.exe param1=123",...

我已经阅读了几次msdn文档,所以我错过了什么?

3 个答案:

答案 0 :(得分:2)

第一个参数是要运行的可执行文件的名称。第二个参数是命令行。命令行不需要包含可执行文件的名称,但如果没有,则传递类似

的名称
"param1 param2"

然后在您的计划中argv[0] == "param1"argv[1] == "param2"。因此,您通常必须将可执行文件的名称作为第一个值来传递,以满足程序的要求,而不是Windows'。

如果未传递可执行文件名,则从命令行字符串中的第一个值中提取它。

答案 1 :(得分:1)

我在文章here中讨论了让CreateProcess运行exes的问题。有许多问题可能出错,包括对完全限定路径的要求,以及命令行中缺少exe名称。

答案 2 :(得分:0)

不是给出可执行文件的名称,而是尝试使用可执行文件的名称给出完整路径。