VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 993|回复: 0

[讨论] 在MFC中调用ShellExecute模拟系统格式化磁盘为ExFAT的操作

[复制链接]
89_avatar_middle
最佳答案
2 
在线会员 发表于 2023-12-13 17:07:59 | 显示全部楼层 |阅读模式
6驿站币
如题,通过ShellExecute调用DOS命令的diskpart命令去对磁盘做操作,具体操作如下:
1.选盘:select disk xxx
2.清除:clean
3.创建主分区:create partition primary
4.快速格式化为ExFAT文件系统:format fs=exFAT quick
5.分配驱动器号:assign
具体代码如下:
  1.                         HINSTANCE result;
  2.                         CString strSelectDisk;
  3.                         strSelectDisk.Format(_T(" /c diskpart /select disk %d"), diskID);
  4.                         result = ShellExecute(NULL, _T("open"), _T("cmd.exe"), strSelectDisk, NULL, SW_SHOWNORMAL);
  5.                         if (result < (HINSTANCE)32)
  6.                                 AfxMessageBox(_T("diskpart select error=%ld"), GetLastError());
  7.                         else
  8.                                 AfxMessageBox(_T("diskpart select success"));

  9.                         CString strCleanDisk;
  10.                         strCleanDisk.Format(_T(" /c diskpart /clean"), diskID);
  11.                         result = ShellExecute(NULL, _T("open"), _T("cmd.exe"), strCleanDisk, NULL, SW_SHOWNORMAL);
  12.                         if (result < (HINSTANCE)32)
  13.                                 AfxMessageBox(_T("diskpart clean error=%ld"), GetLastError());
  14.                         else
  15.                                 AfxMessageBox(_T("diskpart clean success"));

  16.                         CString strCreateDisk;
  17.                         strCreateDisk.Format(_T(" /c diskpart /create partition primary"));
  18.                         result = ShellExecute(NULL, _T("open"), _T("cmd.exe"), strCreateDisk, NULL, SW_SHOWNORMAL);
  19.                         if (result < (HINSTANCE)32)
  20.                                 AfxMessageBox(_T("diskpart clean error=%ld"), GetLastError());
  21.                         else
  22.                                 AfxMessageBox(_T("diskpart clean success"));

  23.                         CString strFormatDisk;
  24.                         strFormatDisk.Format(_T(" /c diskpart /format fs=exFAT quick"));
  25.                         result = ShellExecute(NULL, _T("open"), _T("cmd.exe"), strFormatDisk, NULL, SW_SHOWNORMAL);
  26.                         if (result < (HINSTANCE)32)
  27.                                 AfxMessageBox(_T("diskpart format error=%ld"), GetLastError());
  28.                         else
  29.                                 AfxMessageBox(_T("diskpart format success"));

  30.                         CString strAssignDisk;
  31.                         strAssignDisk.Format(_T(" /c diskpart /assign"));
  32.                         result = ShellExecute(NULL, _T("open"), _T("cmd.exe"), strAssignDisk, NULL, SW_SHOWNORMAL);
  33.                         if (result < (HINSTANCE)32)
  34.                                 AfxMessageBox(_T("diskpart assign error=%ld"), GetLastError());
  35.                         else
  36.                                 AfxMessageBox(_T("diskpart assign success"));
复制代码

运行以上代码时,发现每个命令都运行成功,打印后面都有success,但是磁盘并没有格式化为exFAT文件系统,请问各位,以上代码为什么不能实现以上5个步骤呢?有什么办法能够实现吗?在线等,欢迎各位大佬们指点一二,小弟感激不尽!!!





上一篇:const int *p1_const是保持数据*p1_const不变
下一篇:求qt學習資源
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2024-2-23 18:06

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表