我想使用Windows ShellExecute API執行DOS的FORMAT命令。我不知道我應該如何爲ShellExecute運行DOS命令。目前我正在使用下面的代碼: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等待直到cmd窗口關閉時才掛起。我曾嘗試使用命令字符串作爲SHELLEXECUTEINFO lpFile,但失敗了。
即使執行此代碼,它只是打開一個CMD窗口而不執行format命令。
我需要靜默地執行FORMAT命令而不顯示任何控制檯窗口。我正在使用DiskPart格式化Win7上的驅動器,但對於XP我堅持使用FORMAT。
有人可以幫忙嗎?
Regards
P.S.我還需要覆蓋顯示何時執行FORMAT命令的「插入新磁盤」提示,以便用戶不必點擊輸入以便格式化進程啓動。
你可以試試'sexi.nShow = SW_HIDE'嗎? – perreal 2012-03-12 15:58:06
它只是隱藏控制檯窗口,它不斷等待....而且我不認爲上面的代碼實際上是運行格式,因爲它只是打開一個cmd窗口,但我沒有得到格式提示消息,告訴我插入一個媒體。 – 2012-03-12 17:10:05