我想检查软驱是否有盘,如果有的话就格式化(复制系统文件的那种)。不过不要显示msdos窗口呀!不显示也行!这段程序怎么写呀!请给出代码?

解决方案 »

  1.   

    ///检查驱动器中是否有磁盘
    function DiskInDrive(const Drive: char): Boolean; 
    var 
      DrvNum: byte; 
      EMode: Word; 
    begin 
      result := false; 
      DrvNum := ord(Drive); 
      if DrvNum >= ord('a') then dec(DrvNum,$20); 
      EMode := SetErrorMode(SEM_FAILCRITICALERRORS); 
      try 
        if DiskSize(DrvNum-$40) <> -1 then result := true 
        else messagebeep(0); 
      finally 
        SetErrorMode(EMode); 
      end; 
    end;// disksize(1)=-1 表示软驱A中没有软盘
    //格式化如下:const
            SHFMT_ID_DEFAULT        = $FFFF;
            // Formating options
            SHFMT_OPT_QUICKFORMAT   = $0000;
            SHFMT_OPT_FULL          = $0001;
            SHFMT_OPT_SYSONLY       = $0002;
            // Error codes
            SHFMT_ERROR             = $FFFFFFFF; 
            SHFMT_CANCEL            = $FFFFFFFE; 
            SHFMT_NOFORMAT          = $FFFFFFFD; function SHFormatDrive(Handle: HWND; Drive, ID, Options: Word): LongInt;
            stdcall; external 'shell32.dll' name 'SHFormatDrive'
    //格式化示例
    procedure TForm1.btnFormatDiskClick(Sender: TObject);
    var
            retCode: LongInt;
    begin
            retCode:=SHFormatDrive(Handle, 0, SHFMT_ID_DEFAULT,SHFMT_OPT_QUICKFORMAT);
            if retCode < 0 then
                    ShowMessage('Could not format drive');
    end;//也可以用下面的方法调用:
    procedure TForm1.Button1Click(Sender: TObject); 
    begin 
      ShellExecute(Application.Handle, 
                   PChar('Open'), 
                   PChar('C:\Windows\Rundll32.exe'), 
                   PChar('Shell32.dll,SHFormatDrive'), 
                   PChar('C:\Windows'), 
                   SW_SHOWNORMAL); 
    end; 
      

  2.   

    检查软驱是否有盘用DiskInDrive函数试试
    格式化磁盘用SHFormatDrive
    function SHFormatDrive(hWnd : HWND;Drive, fmtID, Options : WORD) : longint; stdcall; external 'shell32.dll';
      

  3.   

    可以使用VB中的FSO
    FileSystemObject 对象。使用的方法
    var
      fso,d: variant;
      i: integer;
      name: string;begin
    fso := CreateoleObject('Scripting.FileSystemObject');
    name := 'A:';
      d := fso.GetDrive(name);
      if (d.drivetype =1) and( d.isready) then
      begin
        //有软盘你要干的事情
        winexec(pchar('format ' + name) ,SW_HIDE);
      end;
    end;
      

  4.   

    請告訴我 如何在 csdn 上提問