コマンドを cmd.exe に送信してエラー 2 を受け取るプロセスを作成しようとしています。なぜですか? 可能ですか?どのように?
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
String pathexe = "C:\Windows\system32\cmd.exe";
String command= "notepad.exe";
if(!CreateProcess(
pathexe.c_str(), // lpApplicationName
command.c_str(), // lpCommandLine
NULL, // lpProcessAttributes
NULL, // lpThreadAttributes
FALSE, // bInheritHandles
0, // dwCreationFlags
NULL, // lpEnvironment
NULL, // lpCurrentDirectory
&si, // lpStartupInfo
&pi // lpProcessInformation
))
{
AnsiString error = GetLastError();
ShowMessage("Error: " + error);
}
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
PD: 1) この目的で CreateProcess () を使用できると想定されています。ShellExecute () または system() では使用しないでください。2)フォーラムでそれについて読みましたが、このエラーの解決策が見つかりません。同様の質問に対する回答はたくさんありますが、エラーに対処していません。他の機能が提案されているか、ルート コマンドと混在しています。3) マニフェストを作成中にビルドしたため、問題が許容されるとは思いません。4) 私は現在、win7 で 32 ビットの C++ Builder を使用していますが、重要ではありません。5) この問題は (いつものように) 否定的で重複したものとして投票されると思いますが、提案されたテスト例もエラーを受け取ります。ありがとうございます
最初の結論:
エラー 2: 指定されたファイルが見つかりません。
リンク機能: https://msdn.microsoft.com/es-es/library/windows/desktop/ms679360(v=vs.85).aspx リンク エラー: https://msdn.microsoft.com/es-es/ライブラリ/ウィンドウ/デスクトップ/ms681382(v=vs.85).aspx
エラー 2 の場合: 構文、ファイル パス、および存在を確認してください。
作品:
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
String command = "notepad.exe";
if(!CreateProcess(
NULL, // lpApplicationName
commmand.c_str(), // lpCommandLine
NULL, // lpProcessAttributes
NULL, // lpThreadAttributes
FALSE, // bInheritHandles
0, // dwCreationFlags
NULL, // lpEnvironment
NULL, // lpCurrentDirectory
&si, // lpStartupInfo
&pi // lpProcessInformation
))
{
AnsiString error = GetLastError();
ShowMessage("Error: " + error);
}
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
この例はexeでも機能します
String command = "cd C:\\sample\\calc.exe";
ただし、cmd の一般的なコマンドではありません。次のようにコマンドを cmd に送信する方法が必要です。
notepad.exe && cd C:\sample\ && sample1.txt
ありがとうございます