Wenn dies Ihr erster Besuch hier ist,
lesen Sie bitte zuerst die Hilfe - Häufig gestellte Fragen
durch. Sie müssen sich vermutlich registrieren,
bevor Sie Beiträge verfassen können. Klicken Sie oben auf 'Registrieren', um den Registrierungsprozess zu
starten. Sie können auch jetzt schon Beiträge lesen. Suchen Sie sich einfach das Forum aus, das Sie am meisten
interessiert.
falls im Programm auch undokumentierte Win32-API-Funktionen eingesetzt werden dürfen, steht <b>SHFormatDrive</b> zur Verfügung. Ich habe das folgende Beispiel jedoch noch niemals selbst ausprobiert:
<pre>
const
SHFMT_ID_DEFAULT = $FFFF;
// Optionen
SHFMT_OPT_QUICKFORMAT = $0000;
SHFMT_OPT_FULL = $0001;
SHFMT_OPT_SYSONLY = $0002;
// Fehlercodes
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('Formatierung ist fehlgeschlagen');
end;
</pre>
Diese API-Funktion wird nur in dem Microsoft Knowlegde Base-Artikel Q173688 dokumentiert, ist jedoch nicht in der Hilfe zum Win32-SDK enthalten. Der Parameter <i>Drive</i> bestimmt das zu formatierende Laufwerk (0=A, 1=B usw.)
Danke Andreas, dass ist genau das, was ich suche..., Die Information über die API-Funktion SHFormatDrive ist ja leider ein bisschen mager. Ich muss auf diese Funktion zugreifen, weil ich in meinem Programm dem Anwender die Möglichkeit geben will, eine Bootdiskette anzulege
das haben die undokumentierten API-Funktionen so an sich, das die Dokumentation etwas mager ist ;-)
Da keine Infos im Win32-SDK (Microsoft Platform SDK) auftauchen, ist nur der bereits von mir genannte <i>Microsoft Knowlegde Base-Artikel Q173688 "HOWTO: Call SHFormatDrive in Windows 95 and Windows NT"</i> verfügbar. Aus lizenzrechtlichen Gründen kann ich den Inhalt des Artikel hier nicht verteilen - allerdings kannst Du probieren, ob er im MSDN-Bereich der Microsoft-Web-Seiten auftaucht (das Online-MSDN ist kostenfrei!).
Stichworte zu den Parametern von <b>SHFormatDrive</b>: <br>
- <i>Handle</i> ist das eigene Formularhandle <br>
- <i>Drive</i> ist die auf 0 basierende Laufwerksnummer (A=0; C=2)<br>
- <i>ID</i> muss immer SHFMT_ID_DEFAULT sein<br>
- <i>Options</i> unterstützt zur Zeit nur drei Alternativen: Der Wert 0 entspricht dem "Quick Format". Der Wert SHFMT_OPT_FULL entspricht dem vollständigen Formatieren ("Quick Format" ist deaktiviert) und SHFMT_OPT_SYSONLY überträgt nur die Systemdaten für eine bootfähige Diskette
Hi Andreas,
LOL erstmal zu deiner ironischen Bemerkung zu den undokumentierten Funktionen. Mittlerweile war ich selbst auf den MS-Seiten und habe mir erst einmal das SDK sowie den betreffenden Artikel runtergelanden. Ich habe deinen Tips direkt ausprobiert und voila, es klappt. Das der Aufruf SHFormatDrive, dass wusste ich schon, bloss ich wusste nichts über die Parameter und in welcher Bibiliothek die Funktion ist.
Comment