package Win32::Process; require Exporter; require DynaLoader; @ISA = qw(Exporter DynaLoader); $VERSION = '0.09'; # Items to export into callers namespace by default. Note: do not export # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. @EXPORT = qw( CREATE_DEFAULT_ERROR_MODE CREATE_NEW_CONSOLE CREATE_NEW_PROCESS_GROUP CREATE_NO_WINDOW CREATE_SEPARATE_WOW_VDM CREATE_SUSPENDED CREATE_UNICODE_ENVIRONMENT DEBUG_ONLY_THIS_PROCESS DEBUG_PROCESS DETACHED_PROCESS HIGH_PRIORITY_CLASS IDLE_PRIORITY_CLASS INFINITE NORMAL_PRIORITY_CLASS REALTIME_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL THREAD_PRIORITY_BELOW_NORMAL THREAD_PRIORITY_ERROR_RETURN THREAD_PRIORITY_HIGHEST THREAD_PRIORITY_IDLE THREAD_PRIORITY_LOWEST THREAD_PRIORITY_NORMAL THREAD_PRIORITY_TIME_CRITICAL ); sub AUTOLOAD { # This AUTOLOAD is used to 'autoload' constants from the constant() # XS function. my($constname); ($constname = $AUTOLOAD) =~ s/.*:://; my $val = constant($constname); if ($! != 0) { my ($pack,$file,$line) = caller; die "Your vendor has not defined Win32::Process macro $constname, used at $file line $line."; } eval "sub $AUTOLOAD { $val }"; goto &$AUTOLOAD; } # end AUTOLOAD bootstrap Win32::Process; 1; __END__ =head1 NAME Win32::Process - Create and manipulate processes. =head1 SYNOPSIS use Win32::Process; use Win32; sub ErrorReport{ print Win32::FormatMessage( Win32::GetLastError() ); } Win32::Process::Create($ProcessObj, "D:\\winnt35\\system32\\notepad.exe", "notepad temp.txt", 0, NORMAL_PRIORITY_CLASS, ".")|| die ErrorReport(); $ProcessObj->Suspend(); $ProcessObj->Resume(); $ProcessObj->Wait(INFINITE); =head1 DESCRIPTION This module provides access to the process control functions in the Win32 API. =head1 METHODS =over 8 =item Win32::Process::Create($obj,$appname,$cmdline,$iflags,$cflags,$curdir) Creates a new process. Args: $obj container for process object $appname full path name of executable module $cmdline command line args $iflags flag: inherit calling processes handles or not $cflags flags for creation (see exported vars below) $curdir working dir of new process Returns non-zero on success, 0 on failure. =item Win32::Process::Open($obj,$pid,$iflags) Creates a handle Perl can use to an existing process as identified by $pid. The $iflags is the inherit flag that is passed to OpenProcess. Currently Win32::Process objects created using Win32::Process::Open cannot Suspend or Resume the process. All other calls should work. Win32::Process::Open returns non-zero on success, 0 on failure. =item Win32::Process::KillProcess($pid, $exitcode) Terminates any process identified by $pid. $exitcode will be set to the exit code of the process. =item $ProcessObj->Suspend() Suspend the process associated with the $ProcessObj. =item $ProcessObj->Resume() Resume a suspended process. =item $ProcessObj->Kill( $exitcode ) Kill the associated process, have it terminate with exit code $ExitCode. =item $ProcessObj->GetPriorityClass($class) Get the priority class of the process. =item $ProcessObj->SetPriorityClass( $class ) Set the priority class of the process (see exported values below for options). =item $ProcessObj->GetProcessAffinitymask( $processAffinityMask, $systemAffinitymask) Get the process affinity mask. This is a bitvector in which each bit represents the processors that a process is allowed to run on. =item $ProcessObj->SetProcessAffinitymask( $processAffinityMask ) Set the process affinity mask. Only available on Windows NT. =item $ProcessObj->GetExitCode( $exitcode ) Retrieve the exitcode of the process. =item $ProcessObj->Wait($timeout) Wait for the process to die. $timeout should be specified in milliseconds. To wait forever, specify the constant C. =item $ProcessObj->GetProcessID() Returns the Process ID. =back =head1 EXPORTS The following constants are exported by default. CREATE_DEFAULT_ERROR_MODE CREATE_NEW_CONSOLE CREATE_NEW_PROCESS_GROUP CREATE_NO_WINDOW CREATE_SEPARATE_WOW_VDM CREATE_SUSPENDED CREATE_UNICODE_ENVIRONMENT DEBUG_ONLY_THIS_PROCESS DEBUG_PROCESS DETACHED_PROCESS HIGH_PRIORITY_CLASS IDLE_PRIORITY_CLASS INFINITE NORMAL_PRIORITY_CLASS REALTIME_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL THREAD_PRIORITY_BELOW_NORMAL THREAD_PRIORITY_ERROR_RETURN THREAD_PRIORITY_HIGHEST THREAD_PRIORITY_IDLE THREAD_PRIORITY_LOWEST THREAD_PRIORITY_NORMAL THREAD_PRIORITY_TIME_CRITICAL =cut # Local Variables: # tmtrack-file-task: "Win32::Process" # End: