Seite 1 von 1
Format Befehl via API?
Verfasst: 26.04.2005 12:17
von Gamer
Gibt es sowas?
Verfasst: 26.04.2005 13:28
von Laurin
Das ist zwar keine API, aber besser als nichts
AFAIK gibt es keinen API-Befehl für das Formatieren. Das übernimmt immer das kleine Programm format.
Greetz Laurin
Verfasst: 26.04.2005 14:00
von mueckerich
Oder so, falls wirklich das Formatieren von Datenträgern gemeint ist.
Code: Alles auswählen
; By mueckerich
#SHFD_CAPACITY_DEFAULT = 0 ; default Drive capacity
#SHFD_CAPACITY_360 = 3 ; 360KB, applies To 5.25" drives only
#SHFD_CAPACITY_720 = 5 ; 720KB, applies to 3.5" drives only
#SHFD_FORMAT_QUICK = 0 ; quick format
#SHFD_FORMAT_FULL = 1 ; full format
#SHFD_FORMAT_SYSONLY = 2 ; copies system files only (Win95/98 Only!)
#SHFD_DRIVE_1 = 0 ;LW A: wenn vorhanden, sonst C:
#SHFD_DRIVE_2 = 1 ;LW B: wenn vorhanden, sonst C:
#ShLib = 1
OpenLibrary(#ShLib,"shell32.dll")
meHwnd = OpenWindow(0, 100, 300, 400, 200, #PB_Window_SystemMenu, "Format test")
CallFunction(#ShLib,"SHFormatDrive", meHwnd, #SHFD_DRIVE_1, #SHFD_CAPACITY_DEFAULT,#SHFD_FORMAT_FULL)
Repeat
Until WaitWindowEvent() = #PB_EventCloseWindow
Verfasst: 26.04.2005 14:08
von Gamer
Kann man auch konkret einen Laufwerksbuchstaben angeben?
Und sowas wie eine Progressbar machen?
Verfasst: 26.04.2005 14:17
von mueckerich
@Gamer:
Zu Frage 1:
Einen LW-Buchstaben angeben funzt leider nicht da Windows die Laufwerke je nach Hardwarekonfiguration durchnummeriert und die API die Nummer des Laufwerks erwartet. Aber es gibt IMHO irgendwo eine Funktion, die zu der LW-Nummer den passenden LW-Buchstaben liefern kann. Frag mich jetze aber bloß nicht welche. Ist eine Frage für die PB-Gurus hier im Forum.
Zu Frage 2:
Das Thema Progressbar erübrigt sich doch. In dem Fenster das geöffent wird ist unten doch eine Forschrittsanzeige enthalten. Wie man die allerdings anzapft ist mir (noch) nicht bekannt.
Verfasst: 26.04.2005 14:36
von Laurin
mueckerich hat geschrieben:Einen LW-Buchstaben angeben funzt leider nicht da Windows die Laufwerke je nach Hardwarekonfiguration durchnummeriert und die API die Nummer des Laufwerks erwartet. Aber es gibt IMHO irgendwo eine Funktion, die zu der LW-Nummer den passenden LW-Buchstaben liefern kann. Frag mich jetze aber bloß nicht welche. Ist eine Frage für die PB-Gurus hier im Forum.
Die Frage kann dir fast jeder DOS-Programmierer beantworten
Unter DOS gab (gibt) es zwei Systeme:
1) Nummerierung der nach LW-Buchstaben:
A = 0 | B = 1 etc.
2) Nummerierung der LW nach deren Art:
Floppy A = 0 | Floppy B = 1 | und jetzt Achtung! | HDD C = $80 | HDD D = $81 | HDD E = $82 | etc.
Soweit ich das in der MSDN im Laufe der Zeit mitbekommen habe, benutzt Windows immernoch diese Nummerierungen.
Frag mich aber nicht, welche die API benutzt.
Schön, dass es doch eine API für die Formatierung gibt. Ich habe mich wohl geirrt.
Greetz Laurin
Verfasst: 26.04.2005 14:49
von bobobo
sogar mehrere (ab WinNT)
einmal das da oben
dann gibt's noch in der fmifs.dll ne Format-Funktion
ff. hab ich irgendwoher
TheFormatEx function in FMIFS.DLL is prototyped like this:
VOID FormatEx ( PWCHAR DriveRoot ,
DWORD MediaFlag ,
PWCHAR Format,
PWCHAR Label,
BOOL QuickFormat ,
DWORD ClusterSize ,
PFMIFSCALLBACK Callback);
where the FMIFSCALLBACK is:
typedef BOOLEAN (__stdcall *PFMIFSCALLBACK)(
CALLBACKCOMMAND Command,
DWORD SubAction,
PVOID ActionInfo );
Verfasst: 22.07.2005 15:29
von Team100
@bobobo
.... genau damit hatte ich Probleme..... war dann doch einfacher
den CMD Formatbefehl für den Progressbar aufzubereiten.....
Wer eine Dialogbox haben will ist mit SHFormatDrive von mückerich
gut bedient. (Ich hasse fremde Dialogboxen in meinen Programmen....

)
Cu von Team100
Verfasst: 22.07.2005 21:32
von mueckerich
@Team100:
(Ich hasse fremde Dialogboxen in meinen Programmen.... Evil or Very Mad )

Tja, dann soltest Du nur noch Kommandozeileproramme schreiben. Denn... jedes Fenster ist doch irgendwie fremd, schließlich ist das einen Funktion des Betriebssystems.

Auch glaube ich nicht das Du auf Messageboxen, und Requester kompett verzichtest.
Nix für ungut !

Verfasst: 23.07.2005 01:45
von Team100
@Mückerich
.... du hast mich mißverstanden
Ich habe geschrieben: Ich hasse
fremde Dialogboxen in meinen Programmen.....
d.h. ich möchte meinen Programmablauf samt Ereignissen und Fehlerverwaltung
möglichst selbst verwalten. Ist schließlich auch eine
Frage des optischen Aussehens der Dialogfenster. Wenn da so ein
Windows-eigenes Fenster dazwischenkommt ist das optisch nicht immer
dazupassend. Wenn man seine Programme verkaufen muß, dann sind
leider solche Überlegungen sehr wichtig....
Kunden haben sich schon beschwert, daß in den Standard-Messageboxen
ihr Firmenlogo nicht aufscheint ...
Cu von Team100