网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
用vc设计系统援救程序
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
 }

  CString CRescueSysDlg::toShortPath(CString m_inDir)     //用来将长路径名转化为短路径名.

  {

  char strBuffer[_MAX_PATH];

  GetShortPathName(m_inDir,strBuffer,_MAX_PATH);

  CString m_toDir(strBuffer);

  return m_toDir;

  }

  5.为"开始备份"按钮或菜单项生成一个响应函数:

  void CRescueSysDlg::OnBeginBkup()

  {

  CInputName m_inNameDlg;

  // CinputName是一个对话框类,用来将用户输入的备份名称保存在inNameDlg .m_strInputEdit中.

  if(IDCANCEL==m_inNameDlg.DoModal())

    return;

  CFile f1;

  CString m_allFileName[20];

  int m_savedNum=0;

  if(f1.Open(getMyDir()+"backedCab.mqy",CFile::modeRead))

  //读出用户以前所有备份的名称.

  {

    CArchive ar1(&f1,CArchive::load);

    ar1>>m_savedNum;

    for(int i=0;i
      ar1>>m_allFileName[i];

    ar1.Close();

    f1.Close();

  }

  CTime m_curTime=CTime::GetCurrentTime();

  CString strInputAdded,strIsFileName;

  strInputAdded.Format("_%d_%d_%d_%d_%d",m_curTime.GetYear(),m_curTime.GetMonth(),

    m_curTime.GetDay(),m_curTime.GetHour(),m_curTime.GetMinute());

  strIsFileName=m_inNameDlg.m_strInputEdit+strInputAdded;

  CFile f2;

  f2.Open(getMyDir()+"backedCab.mqy",CFile::modeCreate|CFile::modeWrite);

  CArchive ar2(&f2,CArchive::store);

  ar2<
  for(int j=0;j
    ar2<
  ar2<
  ar2.Close();

  f2.Close();  

  m_savedNum++;

  DeleteFile(toShortPath(m_strWinDir)+"\\sysbckup\\rb000.cab");  

  CStdioFile f;    //建立包含系统备份命令的批处理文件并执行.

  f.Open(getMyDir()+"myTemp.bat", CFile::modeCreate|CFile::modeWrite,NULL);

  CString m_strCommand=toShortPath(m_strWinDir)+"\\command\\scanreg.exe/backup\n";

  f.WriteString(m_strCommand);

  f.Close();

  WinExec(getMyDir()+"myTemp.bat",SW_HIDE);

  CString m_toRbName;

  m_toRbName.Format("rb0%d.cab", m_savedNum);     //格式化存储文件名.

  CTime m_beginTime=CTime::GetCurrentTime();

  CTimeSpan m_timeSpan=CTime::GetCurrentTime()-m_beginTime;

  SYSTEM_INFO sysInfo;

  GetSystemInfo(&sysInfo);

  int delayTime=150/sysInfo.wProcessorLevel;     //根据计算机的速度算出大致的完成时间.

  while(!CopyFile(m_strWinDir+"\\sysbckup\\rb000.cab",getMyDir()+m_toRbName,0))

  {

    MSG msg;

    if(::PeekMessage(&msg,m_hWnd,0,0,PM_REMOVE))

    {

      ::TranslateMessage(&msg);

      ::DispatchMessage(&msg);

    }

    if(!(m_progress.GetPos()>=100))

      m_progress.SetPos(100*m_timeSpan.GetSeconds()/delayTime);

    m_timeSpan=CTime::GetCurrentTime()-m_beginTime;

  }

  m_progress.SetPos(100);

  AfxMessageBox("已经成功的备份了系统文件");

  DeleteFile(getMyDir()+"myTemp.bat");

  }

  6.为"开始恢复"按钮或菜单项生成一个响应函数:

  void CRescueSysDlg::OnBeginRestore()

  {

  CRestoreDlg m_restoreDlg;

  // CRestor
  • 上一篇资讯: 谈在VC中动态改变菜单
  • 下一篇资讯: 用VC进行屏幕截取编程
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号