使用API格式化磁盘!请小心使用
我2001版的MSDN中没有这个API,SHFormatDrive PROTO hwnd:HWND,drive:UINT,fmtID:UINT,options:UINT
;1、Hwnd:窗口所有者的句柄
;2、Drive:所有格式化的对象:0指a驱;1指b驱;2指c盘...
;3、Size:暂时无用
;4、options:
SHFMT_OPT_QUICKFORMAT equ 0 ;快速格式化
SHFMT_OPT_FULL equ 1 ;全面格式化
SHFMT_OPT_SYSONLY equ 2 ;格式化时传送系统 sys a(b,c)
源码如下:
;程序只能在Windows XP SP2以上系统使用!!
.386
.model flat, stdcall ;32 bit memory model
option casemap :none ;case sensitive
include FormatUseAPI.inc
include macros.asm
include rsrc.inc
DlgProc PROTO :HWND,:UINT,:WPARAM,:LPARAM
SHFormatDrive PROTO hwnd:HWND,drive:UINT,fmtID:UINT,options:UINT
;1、Hwnd:窗口所有者的句柄
;2、Drive:所有格式化的对象:0指a驱;1指b驱;2指c盘...
;3、Size:暂时无用
;4、options:
SHFMT_OPT_QUICKFORMAT equ 0 ;快速格式化
SHFMT_OPT_FULL equ 1 ;全面格式化
SHFMT_OPT_SYSONLY equ 2 ;格式化时传送系统 sys a(b,c)
.data
.data?
hInstance dd ?
.code
;******************* 对话框回调函数 ***********************************************************
DlgProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
mov eax,uMsg
.if eax==WM_INITDIALOG
.elseif eax==WM_COMMAND
mov eax,wParam
movzx eax,ax
.if eax == IDC_BTN1 ;小心使用!!
invoke SHFormatDrive,hWnd,2,0,SHFMT_OPT_QUICKFORMAT ;快速格式化C盘
.endif
.elseif eax==WM_CLOSE
invoke EndDialog,hWnd,0
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
DlgProc endp
;******************* 程序从这里开始执行 ***********************************************************
start:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke InitCommonControls
invoke DialogBoxParam,hInstance,IDD_DIALOG1,NULL,addr DlgProc,NULL
invoke ExitProcess,0
end start
请大家小心使用!!否则因格式化磁盘造成的损失我不负任何责任!!
楼主转帖也麻烦!!我自己发了!
FormatUseAPI.rar
(3.52 KB)