//#include "tlhelp32.h"
// 示例:
//启动进程
void StartApp(string appPath)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &pi, sizeof(pi) );
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
// Start the child process
if(CreateProcess(appPath.c_str(), "", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
{
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}
else
{
cout<< "启动失败"<< endl;
}
}
//查找相关进程,并关闭
void ShutdownApp(string appName)
{
HANDLE hProcessSnap=NULL;
PROCESSENTRY32 pe32={0};
hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap==(HANDLE)-1)
{
cout<< "查询进程失败"<< endl;
//::MessageBox(NULL,"查询进程失败!:(","错误提示",MB_OK);
}
pe32.dwSize=sizeof(PROCESSENTRY32);
if(Process32First(hProcessSnap,&pe32))
{
do
{
if(!lstrcmpi(pe32.szExeFile, appName.c_str()))//取进程模块名与你的应用程序名比较
{
//检测到相同,然后进行你的处理。
cout<< "you zai yunxing"<< endl;
HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,TRUE,pe32.th32ProcessID);
TerminateProcess(hProcess, 0);//关闭进程
}
}
while(Process32Next(hProcessSnap,&pe32));
}
else
{
cout<< "查询进程出现意外错误"<< endl;
//::MessageBox(NULL,"出现意外错误!","错误提示",MB_OK);
}
CloseHandle(hProcessSnap);
}