转载地址:http://blog.csdn.net/clever101/article/details/9327597

很多时候系统有很多配置项,修改了配置项之后能有一个按钮实现系统重启。所谓重启就是杀死系统的当前进程,然后重新开一个新进程。同事探索了一下,实现了这个功能。我总结了一下他的经验。下面一个MFC的对话框程序的按钮响应函数说明如何实现。

  1. // 重启按钮响应函数  
  2. void CTestRebootDlg::OnBnClickedReboot()  
  3. {  
  4.     // TODO: 在此添加控件通知处理程序代码  
  5. ::PostMessage(AfxGetMainWnd()->m_hWnd,WM_SYSCOMMAND,SC_CLOSE,NULL);  
  6.     //获取exe程序当前路径  
  7.     extern CTestRebootApp theApp;  
  8.     TCHAR szAppName[MAX_PATH];  
  9.     :: GetModuleFileName(theApp.m_hInstance, szAppName, MAX_PATH);  
  10.     CString strAppFullName;  
  11.     strAppFullName.Format(_T("%s"),szAppName);  
  12.     //重启程序  
  13.     STARTUPINFO StartInfo;  
  14.     PROCESS_INFORMATION procStruct;  
  15.     memset(&StartInfo, 0, sizeof(STARTUPINFO));  
  16.     StartInfo.cb = sizeof(STARTUPINFO);  
  17.     ::CreateProcess(  
  18.         (LPCTSTR)strAppFullName,  
  19.         NULL,  
  20.         NULL,  
  21.         NULL,  
  22.         FALSE,  
  23.         NORMAL_PRIORITY_CLASS,  
  24.         NULL,  
  25.         NULL,  
  26.         &StartInfo,  
  27.         &procStruct);  
  28. }  

参考文献:

1.如何自动重启程序

2.windows控制台程序自动重启

【VS开发】VC实现程序重启的做法的更多相关文章

  1. VC实现程序重启的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 很多时候系统有很多配置项,修改了配置项之后能有一个按钮实现系统重启.所谓重启就是杀死系统的当前进程,然后重新开一个新进 ...

  2. VC++实现程序重启的方法(转载)

    转载:http://blog.csdn.net/clever101/article/details/9327597 很多时候系统有很多配置项,修改了配置项之后能有一个按钮实现系统重启.所谓重启就是杀死 ...

  3. VC++ 实现程序重启

    转载:https://blog.csdn.net/what951006/article/details/72729448 一.创建一个Win32项目 二.窗口处理函数中,Create窗口时创建一个按钮 ...

  4. vc/vs开发的应用程序添加dump崩溃日志<转>

    原贴地址:https://blog.csdn.net/wangkui1331/article/details/78029940 vc/vs开发的应用程序出现崩溃的时候,由于没有任何记录,导致开发人员很 ...

  5. Microsoft Visual Studio 开发的C++程序软件发布相关事宜

    VS2005/VS2008软件发布: Debug版本: 非MFC程序: 编译选项mdd: 仅依赖C++库和C运行时库,需要到VS2005/VS2008下安装目录VC/redist/Debug_NonR ...

  6. 在Visual Studio中使用MonoTouch开发iOS应用程序

    前段时间在工作机上装了Mac OS X,这主要是因为我最近需要开发iPhone应用程序.虽然Xcode,Objective C一定是开发iOS应用程序的主流,但是经过一番考虑,我还是决定尝试一下使用M ...

  7. 如何在Ubuntu中使用Eclipse + CDT开发C/C++程序

    在Ubuntu中安装Eclipse和CDT步骤如下: 1. 下载资源(都下载到/home/maxw/Download/Eclipse下)    A. 下载JRE(Java Runtime Enviro ...

  8. 开发微信小程序中SSL协议的申请、证书绑定、TLS 版本处理等

    在上篇随笔<基于微信小程序的系统开发准备工作>介绍了开发微信小程序的一些前期的架构设计.技术路线 .工具准备等方面内容,本篇随笔继续这个步骤,逐步介绍我们实际开发过程中对SSL协议的申请及 ...

  9. 开发微信小程序入门前

    开发微信小程序入门前 百牛信息技术bainiu.ltd整理发布于博客园 2016年09月21日晚 微信发不了微信“小程序”的内测版,一时间整个互联网都炸了锅.个大新闻.论坛都在讨论这个事情. 作为互联 ...

随机推荐

  1. Spring MVC 基于AnnotationFormatterFactory接口实现自定义的规则

    1.创建一个类来实现AnnotationFormatterFactory接口 代码: package com.oukele.CustomAnnotation; import com.oukele.mo ...

  2. Python网络爬虫_爬取Ajax动态加载和翻页时url不变的网页

    1 . 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新 ...

  3. async异步改同步后怎么监听错误

    当我们使用readFile()这种api,它第一个参数是报的错误,当使用async.await把它改写成同步,我们可以使用try  { }catch{ }解决.

  4. Mybatis 中 refid是什么意思

    1.首先定义一个sql标签,一定要定义唯一id 例:<sql  id="Base_Column_List" > name,age </sql> 2.然后通过 ...

  5. 清除eclipse 里面主函数的加载记录 launch configuration删除

    我们eclipse  里面执行的程序,应用 把他记录下来,生成配置文件. 当我们导出行的jar包的时候,需要制定运行的主函数. 会看到很多的历史主程序,带来方便的同时,也产生了影响. 需要清除写记录的 ...

  6. Web大文件上传断点续传解决方案

    最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...

  7. Presto部署指南

    1.Presto简介说明 Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节. Presto的设计和编写完全是为了解决像Facebook这样规模的商业数据仓库 ...

  8. Redis的一点笔记

    Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 优势: 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s . 丰富 ...

  9. “fatal error: hdf5.h: 没有那个文件或目录”解决方法

    問題一: Installing Caffe without CUDA: fatal error: cublas_v2.h No such file: 在Makefile.config中修改,將CPU_ ...

  10. 【Linux】GDB用法详解(5小时快速教程)

    GDB是一个强大的命令行调试工具.虽然X Window提供了GDB的图形版DDD,但是我仍然更钟爱在命令行模式下使用GDB.大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本. UNIX下的软 ...