#include .h>.h>//系统会自动连接到指定的库文件lib #include .h>.h>//std io 标准输入输出接口 #include using namespace std; int main() { char szCommandLine[] = "cmd"; STARTUPINFO si = {sizeof(si)};// PROCESS_INFORMATION pi; si.dwFlags = STARTF_USESHOWWINDOW;//指定wShowWindow成员有效 si.wShowWindow = TRUE;//显示新进程的主窗口 BOOL bRet = ::CreateProcess( NULL,//不在此指定可执行文件的文件名 szCommandLine,//命令行参数,包含执行什么可执行文件 NULL,//默认进程安全性 NULL,//默认线程安全性 FALSE,//当前进程内的句柄不可以被子进程继承 CREATE_NEW_CONSOLE, NULL,//使用本进程的环境变量 NULL,//使用本进程的驱动器和目录 &si,//新进程中主窗口的位置,大小和标准句柄 &pi //返回新进程的信息,如ID号句柄等 ); if(bRet) { printf("新进程的ID号:%d\n",pi.dwProcessId); printf("新进程的主线程的ID号:%d\n",pi.dwThreadId); ::Sleep(6000); //以所有权限打开目标进程,第二个参数指定返回的句柄是否可以被继承 //HANDLE hProcess = ::OpenProcess(PROCESS_ALL_ACCESS,FALSE,pi.dwProcessId); //if(hProcess != NULL) //{ BOOL bRet2 = ::TerminateProcess(pi.hProcess,0);//第二个参数是exit code //} //不使用两个返回的句柄最好把他关闭掉,要不然占有系统资源 ::CloseHandle(pi.hThread); ::CloseHandle(pi.hProcess); } char a; cin>>a; return 0; }
OpenProcess函数可以打开系统当前的进程
获取当前进程的句柄