bool KillExplorer()
/**************************************************************************************/
/*
/* 杀死explorer进程
/*
/**************************************************************************************/
{
PWTS_PROCESS_INFO process_info;
DWORD process_num = 0;
DWORD current_session_id = 0;
ProcessIdToSessionId(GetCurrentProcessId(),¤t_session_id);
sprintf(szLogBuf, "---[%s] 当前用户Session:%d \n",__FUNCTION__, current_session_id);
LOG4CPLUS_INFO(m_oLog, szLogBuf);
if(!WTSEnumerateProcesses(WTS_CURRENT_SERVER_HANDLE,0,1,&process_info,&process_num))
{
WTSFreeMemory(process_info);
return false;
}
DWORD pid = 0;
for(unsigned int i=0; i<process_num; i++)
{
if( current_session_id == process_info[i].SessionId && strcmp(process_info[i].pProcessName,"explorer.exe") == 0)
{
pid = process_info[i].ProcessId;
break;
}
}
WTSFreeMemory(process_info);
if ( pid != 0 )
{
//隐藏任务栏
HWND hwnd=::FindWindow("Shell_TrayWnd",NULL);
LPARAM lParam;
lParam = ABS_AUTOHIDE | ABS_ALWAYSONTOP;
APPBARDATA apBar;
memset(&apBar, 0, sizeof(apBar));
apBar.cbSize = sizeof(apBar);
apBar.hWnd = hwnd;
if(apBar.hWnd != NULL)
{
apBar.lParam = lParam;
SHAppBarMessage(ABM_SETSTATE, &apBar); //设置任务栏自动隐藏
}
HANDLE hProcessHandle = ::OpenProcess( PROCESS_TERMINATE, FALSE, pid );
if ( TerminateProcess( hProcessHandle, 1 ) )
{
CloseHandle(hProcessHandle);
sprintf(szLogBuf, "---[%s] 关闭当前用户的explorer进程成功 \n",__FUNCTION__);
LOG4CPLUS_INFO(m_oLog, szLogBuf);
return true;
}
}
sprintf(szLogBuf, "---%s(%d):[%s] 未找到当前用户的explorer进程 \n",__FILE__,__LINE__,__FUNCTION__);
LOG4CPLUS_ERROR(m_oLog, szLogBuf);
return false;
}
杀掉explorer进程
最新推荐文章于 2022-08-02 01:44:54 发布