2014-02-26 90 views
0

我想知道如何循环一个函数来多次打开可执行程序。我尝试在一段时间内将系统(路径)和CreateProcess(Lpath,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),while和for循环,但只打开一次程序。同时运行可执行文件的多个实例

下面是相关的代码看起来像现在:

for(int i=0; i<10; i++) 
    {  
     CreateProcess(L"C:\\Users\\Ben\\Documents\\Visual Studio 2010\\Projects\\RANDWritter\\Debug\\RANDWritter.exe", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); 
    } 

任何人都知道该怎么办?

+0

这就是'for'和'do' /'while'的意思。请在C++上获得[好书](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list),并学习该语言的基础知识。 –

+0

我会让你知道我有两年的正式经验和丰富的非正式语言经验。我之前尝试过for循环,但没有奏效,我只是试着做了一些,但那也没有奏效。 – TheMohawkNinja

+0

@ TheMohawkNinja:你描述的任何事情都应该正常工作,所以如果你想让人们告诉你你在做什么,你需要展示你作为一个[小的,独立的,可编译的例子](http://sscce.org)做错了。 –

回答

1

在使用GetLastError进行检查之前,明智地看看您调用的函数是否返回错误代码。如果它刚刚返回了成功代码,那么从GetLastError获得的值可能是假的。因此,也请使用BOOL createdOK = CreateProcess(...),并在调用GetLastError之前检查返回的值是!= FALSE。

但是,如果它是真正的错误87你得到,那就解释:它的名字是ERROR_INVALID_PARAMETER(你可以在MSDN's System Error Codes页面查找它们)。查看CreateProcess的MSDN文档,您可能无法省略lpStartupInfo和lpProcessInformation参数。无论如何填写这些信息也是一个好主意,因为它们会向您提供有关新创建流程的信息。更重要的是,因为ProcessInformation中返回的句柄在完成后也必须手动关闭。