1 /* Kill for Win32 by chris@dbn.lia.net
2 * http://users.lia.net/chris/win32/
11 return (x
+ ((x
& 0x40) >> 6) | ((x
& 0x40) >> 3)) & 0x0f;
14 void msg(HANDLE out
, LPCTSTR fmt
...)
17 wvsprintf(tmp
,fmt
,(char*)&fmt
+sizeof(fmt
));
19 WriteFile(out
,tmp
,lstrlen(tmp
),&w
,NULL
);
24 HANDLE stdout
= GetStdHandle(STD_OUTPUT_HANDLE
);
25 HANDLE stderr
= GetStdHandle(STD_ERROR_HANDLE
);
27 LPTSTR cmdline
= GetCommandLine();
29 //Scan command line to end of program name
30 while(*cmdline
&& *cmdline
!= ' ')
32 while(*cmdline
&& *cmdline
++ != '"');
34 // Loop while we have parameters.
38 while(*cmdline
== ' ')
44 pid
= (pid
<< 4) + h2i(*cmdline
++);
46 HANDLE p
= OpenProcess(PROCESS_ALL_ACCESS
,FALSE
,pid
);
49 if(TerminateProcess(p
,(unsigned int)-9))
50 msg(stdout
,"Terminated PID: %08X\n",pid
);
52 msg(stdout
,"Couldn't kill PID: %08X, error=%d\n",pid
,GetLastError());
56 msg(stderr
,"No such PID: %08X, error=%d\n",pid
,GetLastError());