2011-05-31 27 views
3

我目前正在開發一個程序,該程序啓動用戶指定的程序。傳入的 與用戶輸入的wstring相同。我的問題是如何讓它拋出異常或檢查「passedIn」是否爲vaild。目前,如果用戶輸入「notepad.exe」,它會正確啓動它,但如果他們輸入諸如「asdf」之類的虛假東西或某些東西,它仍會創建該過程。如何檢測傳遞到創建進程的無效命令

try { 
    wchar_t* commandLine = new wchar_t [CP_MAX_COMMANDLINE]; 
    wcsncpy_s(commandLine, CP_MAX_COMMANDLINE, passedIn.c_str(), passedIn.size() +1); 
    CreateProcess(NULL, 
     commandLine, 
     NULL, NULL, 
     false,CREATE_NEW_CONSOLE,NULL, 
     NULL, 
     &sinfo, 
     &pi); 

    delete [] commandLine; 
} 
catch (int e) { 
    cout << "An exception occurred. Exception Nr. " << e << endl; 
} 

我希望我的抓住會抓住它,但它does not。有什麼我可以做,以檢查它的虛擬?

謝謝!

回答

3

引述function's documentation(這應該是你第一次檢查的東西):

如果函數成功,返回值是非零。

如果函數失敗,返回值爲零。要獲得更多的錯誤信息,請致電GetLastError

因此,檢查函數的返回值。

+0

完美!謝謝,當我的程序隨機崩潰時,我正在使用getLastError。我必須再等6分鐘才能將此標記爲正確的答案。 – Johnston 2011-05-31 00:40:28

相關問題