对进程的常见操作测试

来源:互联网 发布:ssh权限管理源码 编辑:程序博客网 时间:2024/06/15 17:28

今天测试对单个进程的创建到等待结束。

 

// CreateProTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <windows.h>#include <cstring>#include <stdio.h>#include<iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){DWORD dwExitCode = 0;                             //定义接受退出代码的地址变量UINT inExitCode = 0;TCHAR szCommandLine[] = _T("notepad");            //赋值要创建的进程名称可以是完整路径或者只有进程名PROCESS_INFORMATION pi;                           //定义结构体STARTUPINFO si = {sizeof(si)};                    //初始化结构体memset(&si, 0x00, sizeof(si));                    //结构体清零si.cb = sizeof(STARTUPINFO);si.lpReserved = NULL;si.dwFlags = NULL /*STARTF_USESHOWWINDOW*/;       //如果是NULL则表示创建的进程显示窗体,另一个参数表示不显示窗口si.wShowWindow = SW_HIDE;BOOL retValue = CreateProcess(NULL,                                         //可执行文件的名称(含或不含路径)。如果该参数为NULL,那必须在参数lpCommandLine中传递文件名称。szCommandLine,                                //要创建的命令行参数。需要通过参数来传递NULL,NULL,FALSE,0,NULL,NULL,&si,                                          //结构体&pi                                           //结构体);if(!retValue)                                     //判断返回值,若果是false则表示创建进程失败,通过GetlastError得到错误代码,返回是true表示创建进程成功{int Reetu  = GetLastError();  }CloseHandle(pi.hThread);                          //关闭主线程GetExitCodeProcess(pi.hProcess, &dwExitCode); //TerminateProcess(pi.hProcess, inExitCode);        //终止指定进程及其所有线程WaitForSingleObject(pi.hProcess,/*INFINITE*/3000);  //等待创建的进程句柄退出,参数INFINITE表示一直等待创建的进程正常退出GetExitCodeProcess(pi.hProcess, &dwExitCode);     //得到进程的退出代码,如果是STILL_ACTIVE(259)则表示进程还没有退出,如果退出代码是0则表示进程已经退出if(STILL_ACTIVE == dwExitCode)                   {return 0;}CloseHandle(pi.hProcess);                         //关闭进程句柄,内核对象数目减1    return 0;}


原创粉丝点击