Win32::Process - Create and manipulate processes.

- NAME
- SYNOPSIS
- DESCRIPTION
- METHODS
- EXPORTS

# NAME

Win32::Process - Create and manipulate processes.

# SYNOPSIS

        use Win32::Process;
        use Win32;

        sub ErrorReport{
            print Win32::FormatMessage( Win32::GetLastError() );
        }

        Win32::Process::Create($ProcessObj,
                                    "C:\\winnt\\system32\\notepad.exe",
                                    "notepad temp.txt",
                                    0,
                                    NORMAL_PRIORITY_CLASS,
                                    ".")|| die ErrorReport();

        $ProcessObj->Suspend();
        $ProcessObj->Resume();
        $ProcessObj->Wait(INFINITE);

# DESCRIPTION

This module provides access to the process control functions in the Win32 API.

# METHODS

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.

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.

Win32::Process::KillProcess($pid, $exitcode)
  Terminates any process identified by $pid. $exitcode will be set to the exit code of the process.

$ProcessObj->`Suspend()`
  Suspend the process associated with the $ProcessObj.

$ProcessObj->`Resume()`
  Resume a suspended process.

$ProcessObj->`Kill($exitcode)`
  Kill the associated process, have it terminate with exit code $ExitCode.

$ProcessObj->`GetPriorityClass($class)`
  Get the priority class of the process.

$ProcessObj->`SetPriorityClass($class)`
  Set the priority class of the process (see exported values below for options).

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

$ProcessObj->`SetProcessAffinityMask($processAffinityMask)`
  Set the process affinity mask. Only available on Windows NT.

$ProcessObj->`GetExitCode($exitcode)`
  Retrieve the exitcode of the process.

$ProcessObj->`Wait($timeout)`
  Wait for the process to die. $timeout should be specified in milliseconds. To wait forever, specify the constant `INFINITE`.

$ProcessObj->`GetProcessID()`
  Returns the Process ID.

# 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

Win32::Process - Create and manipulate processes.