再论磁盘格式化问题 老大要求我能对U盘格式化 而不弹出格式化相关的对话框(即我点一下按钮就完成格式化)我知道有SHFormatDrive函数(已经试过)但是不满足要求哪位高手知道?如何实现啊(函数或者代码最好)小弟先谢了~! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.sysinternals.com/ntw2k/source/fmifs.shtml 以下的代码用来执行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;} 可以直接写扇区, 写一个文件系统进去NT下用writefile98下用中断 bohut(伯虎)大哥你的方法我试了,不行啊 CMyMfc可否详细说明一下啊 SHFormatDrive就是主要用来显示对话框的 ^_^ 用ShellExecutechar * 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可以实现,但是又无法隐藏对话框着急啊 用CreateFile->SetFilePointer->WriteFile依然不行 用Depends.exe看看 format.exe 调用哪个连接库 顺便用Spy++看看对话框的详细信息. 用系统Hook钩住他 将 窗口屏蔽 请教几个基础问题 这个结构是什么意思? 系统托盘图标色深的问题 怎样虚拟按了菜单的保存菜单项?在线急等 为什么查询前必须插入 紧急求助!help!help!先谢拉! 如何从自定义的类中直接获得系统消息??? vc++ 为什么有时候不能停止调试? regsvr32.exe注册com组件的问题,很奇怪的问题 Release版本与debug版本差别 CTreeCtrl里的checkbox 问题??谢谢! 欢迎进讨论....
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;
}
NT下用writefile
98下用中断
你的方法我试了,不行啊
CMyMfc
可否详细说明一下啊
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可以实现,但是又无法隐藏对话框着急啊
依然不行
用系统Hook钩住他 将 窗口屏蔽