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; p>
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)); p>
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"< } } }