This example takes a process identifier (pid) from the command line argument and uses the api's above to kill it.
#! perl -slw
use strict;
use Win32::API::Prototype;
ApiLink( 'kernel32', q[
HANDLE OpenProcess(
DWORD dwDesiredAccess,
BOOL bInheritHandle,
DWORD dwProcessId
)
]) or die $^E;
ApiLink( 'kernel32', q[
BOOL TerminateProcess(
HANDLE hProcess,
UINT uExitCode
)
]) or die $^E;
my $pid = shift @ARGV or die 'No pid supplied';
## The magic number 0x1f0fff == PROCESS_ALL_ACCESS
## See http://msdn.microsoft.com/library/default.asp
## ?url=/library/en-us/dllproc/base/process_security_and_access_right
+s.asp
## for details/other possible values.
my $hProcess = OpenProcess( 0x1F0FFF, 0, $pid ) or die $^E;
TerminateProcess( $hProcess, -1 ) or die $^E;
__END__
c:\test>573923 784
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
|