代码之家  ›  专栏  ›  技术社区  ›  Mr. Boy

对win32 createprocess的混淆

  •  1
  • Mr. Boy  · 技术社区  · 14 年前

    我对前两个参数、模块和命令行感到困惑。我发现,除非我把两者都填充进去,否则它不起作用,而且文档中似乎另有说明。

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

    我发现唯一可行的方法是:

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

    我认为这两种方法都能奏效,但到目前为止还没有运气:

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

    我已经看了几遍MSDN文档了,那我还缺什么呢?

    3 回复  |  直到 14 年前
        1
  •  2
  •   avakar    14 年前

    第一个参数是要运行的可执行文件的名称。第二个参数是命令行。但是,如果命令行不包含可执行文件的名称,并且您传递了

    "param1 param2"
    

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

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

        2
  •  1
  •   Bob Moore    14 年前

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

        3
  •  0
  •   user001    14 年前

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