如何使用代码快速格式化USB驱动器

我知道使用以下代码格式化哪个驱动器:

function IsRemovableDrive(Drive: Char): Boolean;
begin
Result := (Winapi.Windows.GetDriveType(PChar(Drive + ':\')) = Winapi.Windows.Drive_Removable);
end;

我尝试了这段代码:

const
SHFMT_DRV_A = 0;
SHFMT_DRV_B = 1;
SHFMT_ID_DEFAULT = $FFFF;
SHFMT_OPT_QUICKFORMAT = 0;
SHFMT_OPT_FULLFORMAT = 1;
SHFMT_OPT_SYSONLY = 2;
SHFMT_ERROR = -1;
SHFMT_CANCEL = -2;
SHFMT_NOFORMAT = -3;

function SHFormatDrive(hWnd: HWND; Drive: Word; fmtID: Word; Options: Word): Longint stdcall; external 'Shell32.dll' Name 'SHFormatDrive';


procedure TForm2.btnFormatClick(Sender: TObject);
var
  FmtRes: Longint;
  cCharTemp : Char;
begin
  try
    cCharTemp := edtDrive.Text[1]; // edtDrive.Tex := 'E';
    FmtRes := ShFormatDrive(Handle, Ord(cCharTemp), SHFMT_ID_DEFAULT, SHFMT_OPT_QUICKFORMAT);
    case FmtRes of
      SHFMT_ERROR: ShowMessage('Error formatting the drive');
      SHFMT_CANCEL: ShowMessage('User canceled formatting the drive');
      SHFMT_NOFORMAT: ShowMessage('No Format')
        else
          ShowMessage('Disk has been formatted!');
    end;
  except
    ShowMessage('Error Occured!');
  end;
end;

当我尝试运行代码时,它总是说“格式化驱动器错误”我在哪里出错了?

大卫·赫弗南(David Heffernan)

最后三个参数是UINT32位类型。声明它们而不是16位Word

drive参数的记录如下:

要格式化的驱动器。此参数的值表示A:驱动器的字母驱动器,从0开始。例如,值为2代表C:驱动器。

您正在传递字母的ASCII序数值。您需要转换'E'4也许是这样的:ord(driveChar) - ord('A')

当我阅读文档,通过$0001作为options一个快速格式化。

与使用Windows API一样,请始终关闭文档:https : //msdn.microsoft.com/zh-cn/library/windows/desktop/bb762169.aspx

您会对此评论感兴趣,可以在这里找到:

格式由对话框界面控制。也就是说,用户必须单击“确定”按钮才能真正开始格式化-无法以编程方式开始格式化。

您的异常处理程序是不必要的,因为try/except内的所有函数均不会引发异常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用GParted格式化后,如何立即更改对外部驱动器的权限?

来自分类Dev

如何在13.04中格式化USB或外部驱动器?

来自分类Dev

如何获得使用exfat格式化的驱动器?

来自分类Dev

如何使用NTFS重新格式化驱动器?

来自分类Dev

使用gnome-disks / terminal格式化ubuntu 12.10,FAT32中的USB驱动器

来自分类Dev

使用GParted格式化后,如何立即更改对外部驱动器的权限?

来自分类Dev

如何使用FAT32格式化USB记忆棒(闪存驱动器)以在Linux和Windows上使用?

来自分类Dev

使用mformat格式化USB驱动器?

来自分类Dev

在Mac上使用不同的分配单位大小在FAT上格式化USB驱动器

来自分类Dev

在FAT32中格式化USB闪存驱动器时要使用什么分配单位大小?

来自分类Dev

如何在13.04中格式化USB或外部驱动器?

来自分类Dev

如何获得使用exfat格式化的驱动器?

来自分类Dev

如何使用NTFS重新格式化驱动器?

来自分类Dev

无法格式化和使用闪存驱动器

来自分类Dev

格式化USB驱动器时出错

来自分类Dev

如何在OSx El Capitan中强制格式化只读USB驱动器?

来自分类Dev

如何格式化使用VirtualBox创建的虚拟硬盘驱动器?

来自分类Dev

如何确定在Linux上如何格式化我的USB /硬盘驱动器?

来自分类Dev

如何格式化使用Bitlocker加密的驱动器?

来自分类Dev

如果我使用--force标志格式化已安装的USB驱动器,会发生什么情况?

来自分类Dev

如何格式化未分配的USB驱动器并将其设置为Fat32?

来自分类Dev

USB驱动器无法格式化

来自分类Dev

尝试格式化USB驱动器时出错

来自分类Dev

如何格式化我的闪存驱动器?

来自分类Dev

如何在FreeBSD的USB软盘驱动器中格式化软盘?

来自分类Dev

如何用fdisk格式化USB驱动器?

来自分类Dev

在Lubuntu中正确格式化和分区USB驱动器以供实时使用

来自分类Dev

确定如何格式化新的闪存USB驱动器

来自分类Dev

使用Windows 10上的USB 3.0端口格式化USB 3.1闪存驱动器是否会将驱动器切换为USB 3.0?

Related 相关文章

  1. 1

    使用GParted格式化后,如何立即更改对外部驱动器的权限?

  2. 2

    如何在13.04中格式化USB或外部驱动器?

  3. 3

    如何获得使用exfat格式化的驱动器?

  4. 4

    如何使用NTFS重新格式化驱动器?

  5. 5

    使用gnome-disks / terminal格式化ubuntu 12.10,FAT32中的USB驱动器

  6. 6

    使用GParted格式化后,如何立即更改对外部驱动器的权限?

  7. 7

    如何使用FAT32格式化USB记忆棒(闪存驱动器)以在Linux和Windows上使用?

  8. 8

    使用mformat格式化USB驱动器?

  9. 9

    在Mac上使用不同的分配单位大小在FAT上格式化USB驱动器

  10. 10

    在FAT32中格式化USB闪存驱动器时要使用什么分配单位大小?

  11. 11

    如何在13.04中格式化USB或外部驱动器?

  12. 12

    如何获得使用exfat格式化的驱动器?

  13. 13

    如何使用NTFS重新格式化驱动器?

  14. 14

    无法格式化和使用闪存驱动器

  15. 15

    格式化USB驱动器时出错

  16. 16

    如何在OSx El Capitan中强制格式化只读USB驱动器?

  17. 17

    如何格式化使用VirtualBox创建的虚拟硬盘驱动器?

  18. 18

    如何确定在Linux上如何格式化我的USB /硬盘驱动器?

  19. 19

    如何格式化使用Bitlocker加密的驱动器?

  20. 20

    如果我使用--force标志格式化已安装的USB驱动器,会发生什么情况?

  21. 21

    如何格式化未分配的USB驱动器并将其设置为Fat32?

  22. 22

    USB驱动器无法格式化

  23. 23

    尝试格式化USB驱动器时出错

  24. 24

    如何格式化我的闪存驱动器?

  25. 25

    如何在FreeBSD的USB软盘驱动器中格式化软盘?

  26. 26

    如何用fdisk格式化USB驱动器?

  27. 27

    在Lubuntu中正确格式化和分区USB驱动器以供实时使用

  28. 28

    确定如何格式化新的闪存USB驱动器

  29. 29

    使用Windows 10上的USB 3.0端口格式化USB 3.1闪存驱动器是否会将驱动器切换为USB 3.0?

热门标签

归档