zoukankan      html  css  js  c++  java
  • C++制作软件重启助手

             不知道大家在编程时有没有遇到过需要重启你编写的软件的情况,比如涉及到数据库还原的时候。如何实现一个软件不需要用户干涉而自动重启呢?除了用多线程以外我的想法是制作一个重启助手,需要重启的程序调用这个重启助手并传递程序路径给重启助手(如:reboot.exe –c c://a.exe),然后程序关闭。重启助手做的就是获取参数,检查路径然后启动参数里的程序。

    我的想法是先建一个MFC控制台程序,在_tmain函数添加实现代码:

    CString flag=argv[1];//获取参数1

    CString spath=argv[2];//获取参数2,即路径参数

    if(flag.IsEmpty()){//参数为空

    MessageBox(NULL,"请不要直接运行此程序!","提示",MB_OK|MB_ICONEXCLAMATION);

    }

    else if(flag=="-c"){

    if (PathFileExists(spath)||PathFileExists(spath+".exe")){//文件存在

                      ShellExecute(NULL,"open", spath,NULL,NULL,SW_SHOWNORMAL);//发送打开路径文件命令

    }

    else{

             AfxMessageBox("找不到程序"+spath+",启动失败!");

             ShellExecute(NULL,"open", spath,NULL,NULL,SW_SHOWNORMAL);

    }                          

    }

    ExitProcess(-1);

    这样重启助手就完成了。

    使用只要在需要重启的代码里添加个重启的静态函数再调用即可,C++如下代码:

    static void RebootApp(CWnd *cWnd){

             CString path;

             GetModuleFileName(NULL,path.GetBufferSetLength(MAX_PATH+1),MAX_PATH);

             path.ReleaseBuffer();

             int pos = path.ReverseFind('\\');

             path = path.Left(pos);//取得当前程序目录

             CString spath= path + "\\RebootHelper.exe";//设置重启助手路径     

             CString strBufCur="\\"+CConvert::ToString(AfxGetApp()->m_pszAppName);//取得当前程序名称

             if (PathFileExists(spath)){//重启助手是否存在

                                ShellExecute(cWnd->m_hWnd,"open", spath,"-c "+ path +strBufCur,NULL,SW_HIDE);//发送带参数打开重启助手命令

                       }

                       else{//不存在

                                MessageBox(cWnd->m_hWnd,"缺少文件自动重启失败,请手动启动!","错误提示",MB_OK|MB_ICONEXCLAMATION);

                       }

                       ExitProcess(-1);

             }

    这样做的优点是通用性强,不仅C++可以用其实平台开发出来的软件也可以调用,有新的项目复制到项目目录即可使用,无需重新开发。

  • 相关阅读:
    Linux下修改Tomcat默认端口
    java 中 byte[]、File、InputStream 互相转换
    安装mule-standalone说明
    python: 可变参数
    vim编码方式设置
    ASCII, Unicode 与 UTF-8
    Vim: 强大的g
    Vim模糊查找与替换
    Vim统计字符串出现次数
    APB简介
  • 原文地址:https://www.cnblogs.com/bemawen/p/3091029.html
Copyright © 2011-2022 走看看