#include <iostream> #include <fstream> #include <windows.h> #include <cstdlib> #include <string> #include <cstring> using namespace std; int idcnt; int t_limit; void check(int id) { FILETIME starttime; FILETIME exittime; FILETIME kerneltime; FILETIME usertime; HANDLE process = ::OpenProcess(PROCESS_ALL_ACCESS, false, id); GetProcessTimes(process,&starttime,&exittime,&kerneltime,&usertime); SYSTEMTIME sstarttime; FileTimeToSystemTime(&starttime,&sstarttime); SYSTEMTIME sys; GetLocalTime( &sys ); int u=0; //运行时间 u=(sys.wMinute-sstarttime.wMinute)*60+sys.wSecond-sstarttime.wSecond; cout << "程序ID:"<< id <<" /t运行时间:" << u <<"秒."<<endl<<endl; if(u>=t_limit){//超时 char tmp[20]; sprintf(tmp,"taskkill /pid %d",id); system(tmp); } } int main(int argc ,char ** argv) { string name(argv[1]); string doss = "tasklist /fi \" IMAGENAME eq "+name+" \" /fo table /nh > c:/windows/temp/csz.dat"; const char * charstr= doss.c_str(); //命令 t_limit = atoi(argv[2]); //时间限制 秒 while(true) { system(charstr); ifstream cfin; cfin.open("c:/windows/temp/csz.dat"); string str; while(cfin) { cfin >> str; if(str.compare(name)==0) //如果找到制定程序 { cout << "str = " << str << endl; cfin >> str; idcnt = atoi(str.c_str()); //得到pid check(idcnt);//检查超时否 } } cfin.close(); Sleep(1000); } return 0; }