我想知道如何循环一个函数来多次打开一个可执行程序。我尝试将系统(路径)和CreateProcess(Lpath,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL)放在while,do 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 :(得分:1)
在使用GetLastError进行检查之前,查看您调用的函数是否返回错误代码总是明智的。如果它只是返回了成功代码,那么从GetLastError获得的值可能是假的。所以也要使用BOOL createdOK = CreateProcess(...)
,并在调用GetLastError之前检查返回值是否为!= FALSE。
但如果你得到了真正的错误87,那就解释了:它的名字是ERROR_INVALID_PARAMETER(你可以在MSDN's System Error Codes页面查看)。查看CreateProcess的MSDN文档,您可能无法省略lpStartupInfo和lpProcessInformation参数。无论如何填写这些内容也是一个好主意,因为它们会为您提供有关新创建过程的信息。更重要的是,因为ProcessInformation中返回的句柄也必须在完成后手动CloseHandle。