如何用C语言重启程序,如何在C ++中杀死然后重启进程?

/

bool _killExplorer()

{

CString strCmd1_KillExplorer = _T("taskkill /f /im explorer.exe");

PROCESS_INFORMATION pi;

STARTUPINFO si = { sizeof si };

bool bCmd = true;

TCHAR szCmdTmp[MAX_PATH];

_tcscpy(szCmdTmp, (LPCTSTR)strCmd1_KillExplorer);

if (CreateProcess(NULL, (LPTSTR)szCmdTmp, NULL, NULL, NULL, CREATE_NO_WINDOW, NULL, NULL, &si, &pi)) {

WaitForSingleObject(pi.hProcess, INFINITE);

DWORD dwCode = 0;

if (!GetExitCodeProcess(pi.hProcess, &dwCode))

bCmd = false;

CloseHandle(pi.hThread);

CloseHandle(pi.hProcess);

}

else {

bCmd = false;

}

return bCmd;

} // _killExplorer()

bool _startExplorer()

{

CString strCmd2_StartExplorer = _T("%systemroot%\sysnative\cmd.exe /c start /B explorer.exe");

TCHAR szCmdTmp[MAX_PATH];

DWORD dwSize = MAX_PATH;

ExpandEnvironmentStrings( (LPCTSTR)strCmd2_StartExplorer, szCmdTmp, dwSize );

PROCESS_INFORMATION pi;

STARTUPINFO si = { sizeof si };

bool bCmd = true;

if (CreateProcessW( NULL, (LPTSTR)szCmdTmp, NULL, NULL, NULL, CREATE_NO_WINDOW, NULL, NULL, &si, &pi)) {

WaitForSingleObject(pi.hProcess, INFINITE);

DWORD dwCode = 0;

if (!GetExitCodeProcess(pi.hProcess, &dwCode))

bCmd = false;

CloseHandle(pi.hThread);

CloseHandle(pi.hProcess);

}

else {

bCmd = false;

}

return bCmd;

} // _startExplorer()

void RestartExplorer()

{

if (_killExplorer()) {

_startExplorer();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值