2014-02-26 143 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中返回的句柄在完成後也必須手動關閉。