Windows ShellExecute APIを使用してDOSのFORMATコマンドを実行しようとしています。 ShellExecuteのDOSコマンドをどのように実行するのかよく分かりません。 CMDウィンドウが閉じられるまで待ちますShellExeute形式DOSコマンド
DWORD returnCode=0;
TCHAR Command[1024];
_stprintf_s(Command, _T("Format M: /FS:FAT32 /Q /X /V:RED"));
SHELLEXECUTEINFO sexi = {0};
sexi.cbSize = sizeof(SHELLEXECUTEINFO);
sexi.hwnd = NULL;
sexi.fMask = SEE_MASK_NOCLOSEPROCESS;
sexi.lpFile = _T("cmd.exe");
sexi.lpParameters = Command;
sexi.nShow = SW_SHOW;
if(ShellExecuteEx(&sexi))
{
DWORD wait = WaitForSingleObject(sexi.hProcess, INFINITE);
if(wait == WAIT_OBJECT_0)
GetExitCodeProcess(sexi.hProcess, &returnCode);
}
だけのWaitForSingleObjectとハングアップするコードのこの部分を実行:現在、私は次のコードを使用しています。私はコマンド文字列をSHELLEXECUTEINFO lpFileとして使用しようとしましたが、失敗しました。
このコードを実行しても、formatコマンドを実行せずにCMDウィンドウを開くだけです。
コンソールウィンドウを表示せずにFORMATコマンドをサイレントモードで実行する必要があります。私はWin7でドライブをフォーマットするためにDiskPartを使用していますが、XPではFORMATが使えません。
誰かが助けてもらえますか?
ありがとうございます。
P.S.また、フォーマット処理を開始するためにユーザーが入力をクリックする必要がないようにFORMATコマンドを実行するときに表示される「Insert New Disk」プロンプトを無効にする必要があります。
あなたは 'sexi.nShow = SW_HIDE'を試してみることができますか? – perreal
ちょうどコンソールウィンドウを隠し、それは待っています....そして、私は、上記のコードは実際にはcmdウィンドウを開くので実際にフォーマットを実行しているとは思わないが、私はメディアを挿入するように指示する形式のプロンプトメッセージを受け取らない。 –