gpt4 book ai didi

c++ - ShellExecute Format DOS 命令

转载 作者:太空宇宙 更新时间:2023-11-04 12:11:19 24 4
gpt4 key购买 nike

我正在尝试使用 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 命令。我正在使用 DiskPart 在 Win7 上格式化驱动器,但对于 XP,我坚持使用 FORMAT。

有人可以帮忙吗?!!!

问候

附言我还需要覆盖执行 FORMAT 命令时显示的“插入新磁盘”提示,这样用户就不必单击 enter 来启动格式化过程。

最佳答案

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

关于c++ - ShellExecute Format DOS 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9670316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com