如何利用Windows提供的API函数,编写程序,实现进程的创建和终止(如创建写字板进程及终止该进程)

2020-09-21 社会 178阅读
#include "stdafx.h"
#include
#include
#include
#include "Tlhelp32.h"
using namespace std;
#define PROCESS_PATH L"C:\\Program Files\\Windows NT\\Accessories\\wordpad.exe"
void open()
{
WCHAR proPath[MAX_PATH];
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
wcscpy(proPath,PROCESS_PATH);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = TRUE;
BOOL bRet = ::CreateProcess(NULL, proPath, NULL,NULL,FALSE, CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi);
return;
}
void close()
{
PROCESSENTRY32 pe;
HANDLE hProcess;
pe.dwSize = sizeof (PROCESSENTRY32);
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
Process32First(hSnapshot,& pe);
do
{
if ( ! _tcsicmp(pe.szExeFile,_T( "wordpad.exe" )))
{
break;
}
pe.dwSize = sizeof(PROCESSENTRY32);
} while(Process32Next(hSnapshot, & pe));
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = TRUE;
hProcess = ::OpenProcess(PROCESS_TERMINATE,FALSE,pe.th32ProcessID); //根据进程ID返回对象句柄
::TerminateProcess(hProcess,0); //根据对象句柄结束进程
CloseHandle(hSnapshot);
CloseHandle(hProcess);
return;
}
int _tmain(int argc, _TCHAR* argv[])
{
//return 0;
char a;
while(TRUE)
{
cout<<"please input the command:";
cin>>a;
switch (a)
{
case '1':
open();
cout<<"command confirmed"< break;
case '2':
close();
cout<<"command confirmed"< break;
case '3':
exit(0);
break;
default:
cout<<"wrong command"< }

}

}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com