我正在尝试使用Windows ShellExecute API执行DOS的FORMAT命令。我不确定我应该如何为ShellExecute运行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将一直等到cmd窗口关闭。我尝试使用Command字符串作为SHELLEXECUTEINFO lpFile,但失败了。
即使在执行此代码时,它也只是打开一个CMD窗口而不执行format命令。
我需要静默执行FORMAT命令而不显示任何控制台窗口。我正在使用DiskPart格式化Win7上的驱动器但是对于XP我仍然坚持使用FORMAT。
有人可以帮忙吗?!!!
此致
P.S。我还需要覆盖"插入新磁盘"执行FORMAT命令时显示的提示,以便用户无需单击enter即可启动格式化过程。