本文共 2532 字,大约阅读时间需要 8 分钟。
WIN32API提供了一个函数用来格式化磁盘 即: DWORD WINAPI SHFormatDrive(HWND hwnd, UINT drive, UINT fmtID, UINT options); 函数原型可以在SHELLAPI.H文件里面找到,如果没有那么表明你没有更新这个头文件。但你仍然可以用SHELL32.LIB库提供的函数。 format c: 用API 看我的文章《硬盘低级格式化研究》 studentforever(鸭蛋) : 能具体一些吗? studentforever(鸭蛋) : MSDN上没有这个函数呀? http://support.microsoft.com/default.aspx?scid=KB;EN-US;q173688& DWORD WINAPI SHFormatDrive(HWND hwnd, UINT drive, UINT fmtID, UINT options); 在MSDN里要搜索才会有 int 13h 磁盘格式化的编程实现 http://www.ccw.com.cn/htm/app/aprog/01_7_3_3.asp HINSTANCE ShellExecute( HWND hwnd, LPCTSTR lpVerb, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd ); 启动Format程序 DeviceIoControl 用CreateFile指定.//PHYSICALDRIVEx 创建Device句柄 使用IOCTL_DISK_FORMAT_TRACKS标志 具体见MSDN DWORD WINAPI SHFormatDrive(HWND hwnd, UINT drive, UINT fmtID, UINT options); C源程序要不要? Email? 说得不明不白!用Format搞定了,什么也不用写!拿来就用OK! system("format c: /q /u"); SHFormatDrive() formate c: 各位老大,我不想调用DOS或WINDOWS里的 FORMAT程序,因为那样的话还要按“Y”或用鼠标选择“开始”按钮,我想直接的,没有提示的干活。 直接格式化“D:”。 不会是要编病毒吧,^_^ DWORD WINAPI SHFormatDrive(HWND hwnd, UINT drive,//0=A,1=B,2=C,... UINT fmtID, UINT options); // // Special value of fmtID which means "use the defaultformat" // #define SHFMT_ID_DEFAULT 0xFFFF // // Option bits for options parameter // #define SHFMT_OPT_QUICKFORMAT 0x0000 #define SHFMT_OPT_FULL 0x0001 #define SHFMT_OPT_SYSONLY 0x0002 // // Special return values. PLEASE NOTE that these are DWORD values. // #define SHFMT_ERROR 0xFFFFFFFFL // Error on last format, // drive may be formatable #define SHFMT_CANCEL 0xFFFFFFFEL // Last format wascanceled #define SHFMT_NOFORMAT 0xFFFFFFFDL // Drive is not formatable #if defined (__cplusplus) } #endif #endif --------------------- 必须通过动态装载的形式调用 DWORD (*PSHFormatDrive)(HWND,UINT,UINT,UINT); PSHFormatDrive=(WORD(*)(HWND,UINT,UINT,UINT))GetProcAddress(GetModuleHandle("Shell32.dll"),"SHFormatDrive"); if(PSHFormatDrive!=NULL) PSHFormatDrive(NULL,2/* Format C: */,SHFMT_ID_DEFAULT,SHFMT_OPT_FULL); 楼上的程序段有问题呀。 我把WORD改成DWORD也还是存在问题, 并没有实现要求的功能呀。 上面的的方法会显示一个对话框窗口,要想真正达到“无声无息”的效果(实际上还是有声音的,那就是硬盘狂响的声音^_^,我的硬盘昨晚被强奸了好几回,这100分不值啊!),就必须执行内部的Format.com命令,具体方法如下: char *FormatW2K = "CMD.EXE"; //这里我用H:盘,你自己要填入你想格式化的盘 char *FormatW2KParam = "/C //"format.com h:/force/q/u/x/V:MISC//""; //在后台执行格式化命令 ShellExecute(NULL,"open",FormatW2K,FormatW2KParam,NULL,SW_HIDE); -------------------------- 在W9X下时,参数格式**可能**如下(因为条件所限,这个不能帮你测试): char *FormatW9X = "COMMAND.COM"; //尤其是/X参数,不知道W9X的Format.com是否支持? char *FormatW9XParam = "/C //"format.com h:/autotest/q/u/x/V:MISC//""; 注明:/force 和/autotest都是未公开的参数转载地址:http://rhdqi.baihongyu.com/