ShellExeute格式DOS命令

时间:2012-03-12 15:51:48

标签: c++ windows visual-studio dos

我正在尝试使用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即可启动格式化过程。

1 个答案:

答案 0 :(得分:1)

您可以使用SHFormatDrive功能。这仍然会显示一个对话框。或者查看似乎想要的Volume Class