#include <windows.h>
#include <winbase.h>
#include <tlhelp32.h>
#include <ctype.h>
#include <string.h>
//P4|3L0
int matarproceso(const char *szToTerminate)
{
BOOL endtask = false;
BOOL bResult,bResultm;
DWORD aiPID[1000],iCb=1000,iNumProc,iV2000=0;
DWORD iCbneeded,i;
char szName[MAX_PATH],szToTermUpper[MAX_PATH];
HANDLE hProc,hSnapShot,hSnapShotm;
HINSTANCE hInstLib;
int iLen,iLenP,indx;
HMODULE hMod;
PROCESSENTRY32 procentry;
MODULEENTRY32 modentry;
iLenP=strlen(szToTerminate);
for(indx=0;indx<iLenP;indx++)
szToTermUpper[indx]=toupper(szToTerminate[indx]);
szToTermUpper[iLenP]=0;
BOOL (WINAPI *lpfEnumProcesses)( DWORD *, DWORD cb, DWORD * );
BOOL (WINAPI *lpfEnumProcessModules)( HANDLE, HMODULE *,DWORD, LPDWORD );
DWORD (WINAPI *lpfGetModuleBaseName)( HANDLE, HMODULE,LPTSTR, DWORD );
HANDLE (WINAPI *lpfCreateToolhelp32Snapshot)(DWORD,DWORD);
BOOL (WINAPI *lpfProcess32First)(HANDLE,LPPROCESSENTRY32);
BOOL (WINAPI *lpfProcess32Next)(HANDLE,LPPROCESSENTRY32);
BOOL (WINAPI *lpfModule32First)(HANDLE,LPMODULEENTRY32);
BOOL (WINAPI *lpfModule32Next)(HANDLE,LPMODULEENTRY32);
hInstLib = LoadLibraryA("PSAPI.DLL");
lpfEnumProcesses = (BOOL(WINAPI *)(DWORD *,DWORD,DWORD*))GetProcAddress( hInstLib, "EnumProcesses" );
lpfEnumProcessModules = (BOOL(WINAPI *)(HANDLE, HMODULE *,DWORD, LPDWORD)) GetProcAddress( hInstLib,"EnumProcessModules" );
lpfGetModuleBaseName =(DWORD (WINAPI *)(HANDLE, HMODULE, LPTSTR, DWORD )) GetProcAddress( hInstLib,"GetModuleBaseNameA" );
bResult=lpfEnumProcesses(aiPID,iCb,&iCbneeded);
iNumProc=iCbneeded/sizeof(DWORD);
for(i=0;i<iNumProc;i++){
strcpy(szName,"¿?");
hProc=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,aiPID[i]);
if(hProc){
if(lpfEnumProcessModules(hProc,&hMod,sizeof(hMod),&iCbneeded) ){
iLen=lpfGetModuleBaseName(hProc,hMod,szName,MAX_PATH);}}
CloseHandle(hProc);
#ifdef BORLANDC
if(strcmp(strupr(szName),szToTermUpper)==0)
#else
if(strcmp(_strupr(szName),szToTermUpper)==0)
#endif
{hProc=OpenProcess(PROCESS_TERMINATE,FALSE,aiPID[i]);
if(hProc)
{
(TerminateProcess(hProc,1));
endtask = true;
}
}
}
if(endtask) return(1);
return(0);
}
int main(void)
{
matarproceso("notepad.exe");
return 0;
}
22 oct 2010
Cerrar proceso sin necesidad de PID
Código con el podemos cerrar un proceso sin tener que preocuparnos por saber el PID del proceso que deseamos cerrar.
Etiquetas:
codigo pid proceso cerrar proceso
Suscribirse a:
Enviar comentarios (Atom)


No hay comentarios:
Publicar un comentario