|
|
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.