Announcement

Collapse
No announcement yet.

Formatieren von Disketten ohne Dialog

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Formatieren von Disketten ohne Dialog

    Gibt es die Möglichkeit unter Delphi Disketten zu formatieren ohne über die Funktion "SHFormatDrive" zu gehen, bzw. ohne den dazugehörigen Dialog anzuzeigen.

    Mein Zeil: Das ganze soll in einer Backup-Routine laufen und zwar möchte ich Disketten, die nicht leer sind "quick-formatieren". Hat jemand eine Lösung für dieses Problem?

  • #2
    Hallo Patrick,<br>
    <br>
    woher stammt SHFormatDrive?<br>
    Im August SDK, kann ich diese nicht finden, auch nicht in den Header Dateien.<br>
    Was ich zu dem Thema finden konnte ist:<br>
    IOCTL_DISK_FORMAT_TRACKS in Verbindung mit DiskIoControl<br>
    (betrifft NT 3.1 ff)<br>
    <br>
    Int 21h Function 440Dh Minor Code 42h (FAT32)<br>
    Int 21h Function 440Dh Minor Code 60h (FAT32)<br>
    (betrifft 9x)<br>
    <br>
    Ist zwar keine Lösung, aber vielleicht ein neuer Ansatzpunkt.<br>
    Ciao<br>
    Chri

    Comment


    • #3
      Die Routine <b>QuietFormatDrive</b> sollte diesen Job erledigen.
      SHFormatDrive ist übrigens eine undokumentierte Funktion aus der
      Shell-Dll.
      <pre>
      procedure FormatDriveDialog;
      begin
      * ShellExecute(Application.Handle,
      ************** 'Open',
      ************** 'C:\Windows\Rundll32.exe',
      ************** 'Shell32.dll,SHFormatDrive',
      ************** 'C:\Windows',
      ************** SW_SHOWNORMAL);
      end;

      function SHFormatDrive(hWnd : HWnd;
      ********************** Drive, fmtID, Options : LongInt):longint;
      ********************** stdcall; external 'shell32.dll';

      procedure QuietFormatDrive;
      const
      * SHFMT_ID_DEFAULT* = $FFFF;
      * SHFMT_OPT_QUICK** = $0000;
      * SHFMT_OPT_FULL*** = $0001;
      * SHFMT_OPT_SYSONLY = $0002;
      * SHFMT_ERROR****** = $FFFFFFFF;
      * SHFMT_CANCEL***** = $FFFFFFFE;
      * SHFMT_NOFORMAT*** = $FFFFFFFD;
      begin
      * case SHFormatDrive(Handle, 0, SHFMT_ID_DEFAULT, SHFMT_OPT_FULL) of
      *** SHFMT_ERROR*** : ShowMessage('Error on last format, drive may be
      formatable');
      *** SHFMT_CANCEL** : ShowMessage('Last format was canceled');
      *** SHFMT_NOFORMAT : ShowMessage('Drive is not formatable');
      * end;
      end;
      </pre><p>
      Da ich grad nicht unter Win surfe (teufel, was mach ich auch in
      diesen ordner?), hab ich es leider nicht ausprobieren können.......
      <p>
      Ansonsten efg lesen:
      http://homepages.borland.com/efg2lab/Library/Delphi/IO/DisksDrives.htm#FormatDisk

      <p>gruß,<br>bernhard
      &#10

      Comment


      • #4
        Moin Bernhard,<br>
        <br>
        vielen Dank für die Info.<br>
        Da kann ich meiner Sammlung undokumentierter Funktionen doch gleich noch eine hinzufügen.<br>
        <br>
        Tschüss und schönes Wochendende noch
        Chri

        Comment

        Working...
        X