Red de conocimiento informático - Material del sitio web - Cómo utilizar las funciones API proporcionadas por Windows para escribir programas para crear y finalizar procesos (como crear un proceso de WordPad y finalizar el proceso)

Cómo utilizar las funciones API proporcionadas por Windows para escribir programas para crear y finalizar procesos (como crear un proceso de WordPad y finalizar el proceso)

#include "stdafx.h"

#include

#include

#include < cstdio>

#include "Tlhelp32.h"

usando el espacio de nombres std;

#define PROCESS_PATH L"C:\\Program Files\\Windows NT\ \Accesorios\\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);

hacer

{

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); //Devuelve el identificador del objeto según el ID del proceso

::TerminateProcess(hProcess,0); //Según el identificador del objeto finaliza el proceso

CloseHandle(hSnapshot);

CloseHandle(hProcess);

retorno;

}

int _tmain(int argc, _TCHAR* argv[])

{

//return 0;

char a;

while(TRUE)

{

cout<<"ingrese el comando :";

cin>>a;

cambiar (a)

{

caso '1':

open();

cout<<"comando confirmado"<

break;

caso '2':

close();

cout<<"comando confirmado"<

break;

caso '3':

salir(0);

romper;

predeterminado:

cout<<"comando incorrecto"<

}

}

}