|
|
1.1 ! root 1: #include <stdio.h> ! 2: #include <stdlib.h> ! 3: #include <stdarg.h> ! 4: #include <windows.h> ! 5: #include <string.h> ! 6: #include <math.h> ! 7: #include <winbase.h> ! 8: ! 9: /*-----------------------------------------------------------------*/ ! 10: ! 11: void ErrorOut(char errstring[30]) ! 12: /* ! 13: Purpose: Print out an meainful error code by means of ! 14: GetLastError and printf ! 15: ! 16: Inputs: errstring - the action that failed, passed by the ! 17: calling proc. ! 18: ! 19: Returns: none ! 20: ! 21: Calls: GetLastError ! 22: */ ! 23: ! 24: { ! 25: DWORD Error; ! 26: ! 27: Error= GetLastError(); ! 28: printf("Error on %s = %d\n", errstring, Error); ! 29: } ! 30: ! 31: /*-----------------------------------------------------------------*/ ! 32: ! 33: ! 34: void main(int argc, char *argv[]) ! 35: /* ! 36: Purpose: terminate a process based on the PID passed in ! 37: ! 38: Inputs: argc - number of arguments passed in ! 39: argv - arguments, including PID of process to terminate ! 40: ! 41: Returns: none ! 42: ! 43: Calls: GetLastError ! 44: OpenProcess - to get handle to process ! 45: TerminateProcess - to terminate process ! 46: */ ! 47: ! 48: { ! 49: HANDLE hProcess; ! 50: double ProcId; ! 51: BOOL TermSucc; ! 52: int chrintval, chrpos, downcount; ! 53: int count=0; ! 54: ! 55: ! 56: if (argc == 2) /* if a PID is passed in */ ! 57: { ! 58: chrpos= strcspn( argv[1], "\0"); ! 59: count=0; ! 60: ProcId=0; ! 61: ! 62: /* convert decimal value to hex */ ! 63: for (downcount = chrpos -1 ; downcount >= 0; downcount--) ! 64: { ! 65: if (argv[1][downcount] >= '0' && argv[1][downcount] <= '9') ! 66: chrintval= argv[1][downcount]-48; ! 67: else ! 68: if (argv[1][downcount] >= 'a' && argv[1][downcount] <= 'f') ! 69: chrintval= argv[1][downcount]-87; ! 70: else ! 71: chrintval= argv[1][downcount]-55; ! 72: ProcId+= chrintval * pow( (double)16, (double)count ); ! 73: count++; ! 74: } ! 75: /* open the process to terminate */ ! 76: hProcess= OpenProcess(PROCESS_ALL_ACCESS, TRUE, (DWORD)ProcId); ! 77: if (hProcess == NULL) ! 78: ErrorOut("OpenProcess"); ! 79: TermSucc= TerminateProcess(hProcess, 0); /* terminate it */ ! 80: if (TermSucc == FALSE) ! 81: ErrorOut("TerminateProcess"); ! 82: else ! 83: printf("Process# %s terminated successfully!\n", argv[1]); ! 84: } ! 85: else /* no PID, inform user of operation */ ! 86: { ! 87: printf("\nTerminates an active Process\n"); ! 88: printf("Usage: termproc ProcessID\n"); ! 89: } ! 90: ! 91: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.