我正在尝试使用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窗口closures。 我曾尝试使用命令string作为SHELLEXECUTEINFO lpFile但失败。
甚至当执行这个代码时,它只是打开一个CMD窗口而不执行format命令。
我需要静默执行FORMAT命令,而不显示任何控制台窗口。 我正在使用DiskPart来格式化Win7上的驱动器,但对于XP我坚持格式。
有人可以帮忙吗?
问候
PS我还需要覆盖“插入新磁盘”提示,显示何时执行FORMAT命令,以便用户不必点击input格式进程启动。
您可以使用SHFormatDrive功能。 这仍然会显示一个对话框。 或者检查似乎确实想要的音量类 。