我正在尝试使用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窗口关闭。我尝试将命令字符串用作SHELLEXECUTEINFO lpFile,但是失败了。
即使执行此代码,它也只打开一个CMD窗口而不执行format命令。
我需要在不显示任何控制台窗口的情况下以静默方式执行FORMAT命令。我正在使用DiskPart格式化Win7上的驱动器,但对于XP我却坚持使用FORMAT。
有人可以帮忙吗?!!!
问候
附言我还需要覆盖“插入新磁盘”提示,该提示在您执行FORMAT命令时显示,以便用户不必单击Enter即可启动格式化过程。
最佳答案
您可以使用SHFormatDrive函数。这仍然会显示一个对话框。或检查似乎确实想要的Volume Class。