私はC++プログラムを使ってコマンドラインを起動しようとしていますが、その後cmdコマンドを実行してください。私は何が間違っているのか分かりません。私はMSDNのドキュメントを見てきましたが、私は自分のコードで何を変更するのか理解できません。CreateProcessを使ってcmdでコマンドを実行するには?
以下は、私が書いたコードです。私はcmdを起動し、cmdArgsでコマンドを実行しようとしています。しかし、プログラムの実行時には、nslookupの部分を実行せずにcmdを起動するだけです。 ipconfigのような他のコマンドも試してみましたが、実行されません。誰かが私が間違っていることを理解するのを助けることができますか?
プログラムを起動すると、cmdが表示されます。私がしようとしているのは、cmdArgsを実行し、cmdスクリーン上の出力を見ることです。
私はC++を使い慣れていないので、これが自明であれば謝ります。私はサイト上の他の質問を見てきましたが、cmdArgsの形式は正しいと思われます - プログラム名の後ろにargが続きます。
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
LPTSTR cmdPath = _T("C:\\Windows\\System32\\cmd.exe");
LPTSTR cmdArgs = _T("C:\\Windows\\System32\\cmd.exe nslookup myip.opendns.com. resolver1.opendns.com");
if (!CreateProcess(cmdPath, cmdArgs, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
{
std::cout << "Create Process failed: " << GetLastError() << std::endl;
return "Failed";
}
CreateProcessはドキュメントで指定されているとおりに変更できるため、コマンドラインには書き込み可能な文字列を渡す必要があります。 'TCHAR cmdArgs [] = _T(" ... ");'のようなものクラッシュしている場合は、デバッガで実行してどこで、なぜそれを見つけるべきですか? –
なぜこれをやりますか?なぜnslookupを実行しないのですか? –