重启进程

方法一:

void CXXXDlg::RestartSoftWare()
{
::PostMessage(AfxGetMainWnd()->m_hWnd, WM_SYSCOMMAND, SC_CLOSE, NULL);
//获取exe程序当前路径
extern CXXXApp theApp;
TCHAR szAppName[MAX_PATH];
::GetModuleFileName(theApp.m_hInstance, szAppName, MAX_PATH);
CString strAppFullName;
strAppFullName.Format(_T("%s"), szAppName);
//重启程序
STARTUPINFO StartInfo;
PROCESS_INFORMATION procStruct;
memset(&StartInfo, 0, sizeof(STARTUPINFO));
StartInfo.cb = sizeof(STARTUPINFO);
::CreateProcess(
(LPCTSTR)strAppFullName,
NULL,
NULL,
NULL,
FALSE,
NORMAL_PRIORITY_CLASS,
NULL,
NULL,
&StartInfo,
&procStruct);
}

方法二:

//启动

ShellExecute(NULL,"open","Path","","",SW_SHOW);

//关闭进程
UINT iProID=GetProcessIdByName(_T(".exe"));
HWND hWnd=ProcIDToMainHWND(iProID);
if(hWnd){
::SendMessage(hWnd,WM_CLOSE,0,0);
}

#include "tlhelp32.h"
// 根据进程反找主窗口句柄
// 2007.9.16
HWND ProcIDToMainHWND(DWORD a_hProcID)
{
int iCount=0;
HWND hWnd=::FindWindow(NULL,NULL);
DWORD hProcId;
while(hWnd!=0)
{
if(::GetParent(hWnd)==0)
{
//_MyGetWindowText(hWnd,chr,255);
GetWindowThreadProcessId(hWnd, &hProcId);
if(hProcId==a_hProcID){
return hWnd;
}
}
hWnd=::GetWindow(hWnd,GW_HWNDNEXT);
}
return 0;
}
/////////////////////
UINT GetProcessIdByName(LPCTSTR pszExeFile)
{
UINT nProcessID = 0;
PROCESSENTRY32 pe = {sizeof(PROCESSENTRY32)};

HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
if (hSnapshot != INVALID_HANDLE_VALUE)
{
if (Process32First(hSnapshot, &pe))
{
while (Process32Next(hSnapshot, &pe))
{
if (lstrcmpi(pszExeFile, pe.szExeFile) == 0)
{
nProcessID = pe.th32ProcessID;
break;
}
}
}
CloseHandle(hSnapshot);
}
return nProcessID;
}

时间: 2024-10-06 14:01:23

重启进程的相关文章

CentOS7 定时检测进程占用内存大小,执行重启进程操作(xjl456852原创)

在使用CentOS时,个别程序的进程会一直增大,直到宕机.但是这种程序本身有没有更好的版本使用(比如ngrok免费就这样,付费的就没这个问题),所以想写一个脚本定时检测一下这个程序的情况,决定是否需要重启,该重启时重启,没有启动则让他启动. 注:脚本名中最好不要包含ngrokd, 因为脚本执行时自己也会成为一个进程,获取原始ngrokd的进程大小就不能简写为grep "ngrokd"  ,而应改为全路径:grep "/usr/local/ngrok/bin/ngrokd&qu

不停服务重启进程使配置生效

kill -HUP pid pid 是进程标识.如果想要更改配置而不需停止并重新启动服务,请使用该命令.在对配置文件作必要的更改后,发出该命令以动态更新服务配置. 不停服务重启进程使配置生效

一个监控进程的脚本,若进程异常重启进程

#!/bin/shecho "Current DIR is " $PWDwhile [ 1 ]do serverpid=`ps -ef|grep 进程名|grep -v grep|awk '{print $2}'` if [ "$serverpid" ] then echo "进程名 is running,pid is " $serverpid #kill -9 $serverpid else echo "进程名 is down ,no

shell:监控进程运行状态并自动重启进程

#!/bin/sh MAXRSTCOUNT=5; PROCTOGO=/mnt/hgfs/code/test/show #count is the counter of test started times count=0 sys_reboot() { echo "system is going to reboot"; reboot; } main_loop() { while : do ######################################### ProStill

删除目录文件重启进程

#!/bin/bash #@author vickey main() { TMP_PATH="/home/test" echo "are you sure to del all files in test/?" echo "y/n?: " read answer if [ ${answer} == "y" -o ${answer} == "Y" ] then restart rm -rf /home/tes

idea html,js修改不用重启进程

1.Setting -> build-compiler ---勾选  Build project automatically选项 2.快捷键Ctrl + Shift + A查找registry命令: 在查找到的registry命令通过鼠标双击或敲回车键,在弹出的面板中搜索关键字automake, 找到并勾选 compiler.automake.allow.when.app.running 勾选 compile.document.save.trigger.delay  为100 compile.a

进程监控重启脚本

1.新建监控脚本文件: [[email protected] ~]# vi /root/mongodb-cron.sh #!/bin/sh NUM0=`ps -ef | grep -i 'config=/var/data/mongodb/bin/mongod.config' | grep -v "grep" | wc -l` #查看程序进程是否存活,结果为0为不存活,非0为存活 if [ $NUM0 -eq 0 ]; then echo "try start mongodb&

Zabbix监控Windows进程重启

前段时间,一个朋友咨询我怎么监控Windows进程的重启.生产环境有监控进程的启动和关闭,但重启还没想过.经过一番思考和摸索后成功完成了监控,下面把监控思路和方法分享给大家. 我首先想到的是通过Zabbix自带的进程数监控(proc.num)来做,但有两个难点:一.进程数从1变为0再变为1,算是一次重启.触发器要判断三次连续的监控数据,不太好做:二.进程从关闭到下次启动,中间间隔多长时间算是一次重启呢? 然后想到了zabbix监控操作系统的重启,比如Windows系统重启的触发器:{Templa

linux shell守护进程/ rac重启脚本

建立一个守护进程: #! /bin/sh PRO_NAME=./xxxx.sh while true ; do #用ps获取$PRO_NAME进程数量 echo ''> nohup.out NUM=`ps aux | grep -w ${PRO_NAME} | grep -v grep |wc -l` #echo $NUM #少于1,重启进程 if [ "${NUM}" -lt "1" ];then echo "${PRO_NAME} was kil