0

パラメータ lpCurrentDirectory を指定して createprocess() を使用してアプリケーションからプロセスを作成しましたが、機能しません。「指定されたパスが見つかりません」というエラーが表示されます。私のコードは CreateProcess( "XYZ\\bin\\run.bat", NULL, NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, "XYZ\\bin", &siStartupInfo, &piProcessInfo ) ; 、GetCurrentDir() を使用して現在のディレクトリを取得し、現在のディレクトリに追加することで、lpCurrentDirectory としてフル パスを指定するXYZ\\binこともできますが、それでも機能しません。バッチ ファイルを lpCurrentDirectory から実行したい。createProcess() が lpCurrentDirectory パラメータでどのように機能するかわかりません。フルパスまたは相対パスを期待していますか?

フルパスをハードコーディングしてこれも試しましたが、同じエラーが表示されます。実際、私の元のコードは、 `

char cCurrentPath[FILENAME_MAX];

if (!GetCurrentDir(cCurrentPath, sizeof(cCurrentPath)))
 {
    printf("\n error...");
 }

string path(cCurrentPath);
path += "\\XYZ\\bin";

wstring_convert<std::codecvt_utf8<wchar_t>> converter;          

wstring wstringData = converter.from_bytes(path); 

TCHAR lpszClientPath[500]= TEXT("XYZ\\bin\\run.bat /y");

if(::CreateProcess(NULL, lpszClientPath, NULL, NULL, TRUE,  CREATE_NEW_CONSOLE,NULL, wstringData.c_str(), &si, &pi) > 0)

`。

4

3 に答える 3

0

CreateProcess はプロセスを開始するためのもので、実行可能ファイルを渡す必要があります。.bat を渡すことはできません。代わりに、/C オプションを指定して cmd.exe を起動し、バッチ ファイルを引数として渡す必要があります。

于 2013-10-13T19:34:45.077 に答える
0

これを見てください。前のスレッドであなたに与えられた回答を繰り返すので、スレッド全体を読む必要があります。

于 2013-10-10T13:08:38.030 に答える