在进行相关设置后需进行程序的重启,先弹出对话框:
if(MessageBox("更改设置后需重启程序","提示",MB_YESNO) == IDYES)
{
m_dlgSuperMarket.Restart();//重启程序
::TerminateProcess(::GetCurrentProcess(),NULL);//终止原先程序
}
void CSerialPortDlg::Restart()//重启系统
{
PROCESS_INFORMATION pi;
memset((void*)&si,0,sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.wShowWindow = SW_SHOW;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
CHAR FilePath[255];
char * filename = "SuperMarket.exe";//程序exe文件名
GetModuleFileName(NULL,FilePath,255); //获得文件的路径
(strrchr(FilePath,'\\'))[1] = 0;
strcat(FilePath,filename);
CreateProcess(NULL,FilePath,NULL,NULL,TRUE,0,NULL,NULL,&si,&pi); }
本文深入探讨了在更改设置后需重启程序的原理及实现方法,包括对话框交互、终止原有进程和启动新进程的过程。

被折叠的 条评论
为什么被折叠?



