3

現在、ユーザーが指定したプログラムを起動するプログラムに取り組んでいます。渡されるのは、ユーザーが入力したwstringです。私の質問は、どうすれば例外をスローするか、「passedIn」が有効かどうかを確認する方法です。現在、ユーザーが「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;
}

私は自分の漁獲量がそれをつかむことを望んでいましたが、そうではありません。それが有効かどうかを確認するために私ができることはありますか?

ありがとう!

4

1 に答える 1

3

関数のドキュメントを引用する(最初にチェックしたはずです):

関数が成功した場合、戻り値はゼロ以外です。

関数が失敗した場合、戻り値はゼロです。拡張エラー情報を取得するには、を呼び出しますGetLastError

したがって、関数の戻り値を確認してください。

于 2011-05-31T00:36:09.430 に答える