老大要求我能对U盘格式化 
而不弹出格式化相关的对话框(即我点一下按钮就完成格式化)我知道有SHFormatDrive函数(已经试过)
但是不满足要求哪位高手知道?
如何实现啊(函数或者代码最好)小弟先谢了~!

解决方案 »

  1.   

    http://www.sysinternals.com/ntw2k/source/fmifs.shtml
      

  2.   

    以下的代码用来执行dos命令且不显示窗口#define EXECDOSCMD "ping www.sohu.com" //可以换成你的命令format ....
    BOOL ExecDosCmd()
    {
    SECURITY_ATTRIBUTES sa;
    HANDLE hRead,hWrite;

    sa.nLength = sizeof(SECURITY_ATTRIBUTES);
    sa.lpSecurityDescriptor = NULL;
    sa.bInheritHandle = TRUE;
    if (!CreatePipe(&hRead,&hWrite,&sa,0)) 
    {
    return FALSE;


    STARTUPINFO si;
    PROCESS_INFORMATION pi; 
    si.cb = sizeof(STARTUPINFO);
    GetStartupInfo(&si); 
    si.hStdError = hWrite;
    si.hStdOutput = hWrite;
    si.wShowWindow = SW_HIDE;
    si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
             //关键步骤,CreateProcess函数参数意义请查阅MSDN
    if (!CreateProcess(NULL, EXECDOSCMD
    ,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)) 
    {
    return FALSE;
    }
    CloseHandle(hWrite);

    char buffer[4096] = {0};
    DWORD bytesRead; 
    while (true) 
    {
    if (ReadFile(hRead,buffer,4095,&bytesRead,NULL) == NULL)
    break;
    //buffer中就是执行的结果,可以保存到文本,也可以直接输出
                      printf(buffer);
    Sleep(200); 

             return TRUE;
    }
      

  3.   

    可以直接写扇区, 写一个文件系统进去
    NT下用writefile
    98下用中断
      

  4.   

    bohut(伯虎)大哥
    你的方法我试了,不行啊 
    CMyMfc
    可否详细说明一下啊
      

  5.   

    SHFormatDrive就是主要用来显示对话框的 ^_^
      

  6.   

    用ShellExecute
    char * Format = "cmd.exe";
    char * Param = "format d:/force/q";
    ShellExecute(NULL,"open",Format,Param,NULL,SW_HIDE);
    参数传不进来用WinExec
    象PING 的命令都可以
    如WinExec("ping 192.168.0.1",SW_HIDE);
    就是WinExec("format d: /force/q",SW_HIDE);不行用SYSTEM和SHFormatDrive可以实现,但是又无法隐藏对话框着急啊
      

  7.   

    用CreateFile->SetFilePointer->WriteFile
    依然不行
      

  8.   

    用Depends.exe看看 format.exe 调用哪个连接库 顺便用Spy++看看对话框的详细信息.
     用系统Hook钩住他 将 窗口屏蔽