home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / Process.pm < prev    next >
Text File  |  2002-07-08  |  5KB  |  197 lines

  1. package Win32::Process;
  2.  
  3. require Exporter;
  4. require DynaLoader;
  5. @ISA = qw(Exporter DynaLoader);
  6.  
  7. $VERSION = '0.09';
  8.  
  9. # Items to export into callers namespace by default. Note: do not export
  10. # names by default without a very good reason. Use EXPORT_OK instead.
  11. # Do not simply export all your public functions/methods/constants.
  12. @EXPORT = qw(
  13.     CREATE_DEFAULT_ERROR_MODE
  14.     CREATE_NEW_CONSOLE
  15.     CREATE_NEW_PROCESS_GROUP
  16.     CREATE_NO_WINDOW
  17.     CREATE_SEPARATE_WOW_VDM
  18.     CREATE_SUSPENDED
  19.     CREATE_UNICODE_ENVIRONMENT
  20.     DEBUG_ONLY_THIS_PROCESS
  21.     DEBUG_PROCESS
  22.     DETACHED_PROCESS
  23.     HIGH_PRIORITY_CLASS
  24.     IDLE_PRIORITY_CLASS
  25.     INFINITE
  26.     NORMAL_PRIORITY_CLASS
  27.     REALTIME_PRIORITY_CLASS
  28.     THREAD_PRIORITY_ABOVE_NORMAL
  29.     THREAD_PRIORITY_BELOW_NORMAL
  30.     THREAD_PRIORITY_ERROR_RETURN
  31.     THREAD_PRIORITY_HIGHEST
  32.     THREAD_PRIORITY_IDLE
  33.     THREAD_PRIORITY_LOWEST
  34.     THREAD_PRIORITY_NORMAL
  35.     THREAD_PRIORITY_TIME_CRITICAL
  36. );
  37.  
  38. sub AUTOLOAD {
  39.     # This AUTOLOAD is used to 'autoload' constants from the constant()
  40.     # XS function.
  41.     my($constname);
  42.     ($constname = $AUTOLOAD) =~ s/.*:://;
  43.     local $! = 0;
  44.     my $val = constant($constname);
  45.     if ($! != 0) {
  46.         my ($pack,$file,$line) = caller;
  47.         die "Your vendor has not defined Win32::Process macro $constname, used at $file line $line.";
  48.     }
  49.     eval "sub $AUTOLOAD { $val }";
  50.     goto &$AUTOLOAD;
  51. } # end AUTOLOAD
  52.  
  53. bootstrap Win32::Process;
  54.  
  55. 1;
  56. __END__
  57.  
  58. =head1 NAME
  59.  
  60. Win32::Process - Create and manipulate processes.
  61.  
  62. =head1 SYNOPSIS
  63.     use Win32::Process;
  64.     use Win32;
  65.  
  66.     sub ErrorReport{
  67.         print Win32::FormatMessage( Win32::GetLastError() );
  68.     }
  69.  
  70.     Win32::Process::Create($ProcessObj,
  71.                 "D:\\winnt35\\system32\\notepad.exe",
  72.                 "notepad temp.txt",
  73.                 0,
  74.                 NORMAL_PRIORITY_CLASS,
  75.                 ".")|| die ErrorReport();
  76.  
  77.     $ProcessObj->Suspend();
  78.     $ProcessObj->Resume();
  79.     $ProcessObj->Wait(INFINITE);
  80.  
  81. =head1  DESCRIPTION
  82.  
  83. This module provides access to the process control functions in the
  84. Win32 API.
  85.  
  86. =head1 METHODS
  87.  
  88. =over 8
  89.  
  90. =item Win32::Process::Create($obj,$appname,$cmdline,$iflags,$cflags,$curdir)
  91.  
  92. Creates a new process.
  93.  
  94.     Args:
  95.  
  96.     $obj        container for process object
  97.     $appname    full path name of executable module
  98.     $cmdline    command line args
  99.     $iflags        flag: inherit calling processes handles or not
  100.     $cflags        flags for creation (see exported vars below)
  101.     $curdir        working dir of new process
  102.  
  103. Returns non-zero on success, 0 on failure.
  104.  
  105. =item Win32::Process::Open($obj,$pid,$iflags)
  106.  
  107. Creates a handle Perl can use to an existing process as identified by $pid.
  108. The $iflags is the inherit flag that is passed to OpenProcess.  Currently
  109. Win32::Process objects created using Win32::Process::Open cannot Suspend
  110. or Resume the process.  All other calls should work.
  111.  
  112. Win32::Process::Open returns non-zero on success, 0 on failure.
  113.  
  114. =item Win32::Process::KillProcess($pid, $exitcode)
  115.  
  116. Terminates any process identified by $pid.  $exitcode will be set to
  117. the exit code of the process.
  118.  
  119. =item $ProcessObj->Suspend()
  120.  
  121. Suspend the process associated with the $ProcessObj.
  122.  
  123. =item $ProcessObj->Resume()
  124.  
  125. Resume a suspended process.
  126.  
  127. =item $ProcessObj->Kill( $exitcode )
  128.  
  129. Kill the associated process, have it terminate with exit code $ExitCode.
  130.  
  131. =item $ProcessObj->GetPriorityClass($class)
  132.  
  133. Get the priority class of the process.
  134.  
  135. =item $ProcessObj->SetPriorityClass( $class )
  136.  
  137. Set the priority class of the process (see exported values below for
  138. options).
  139.  
  140. =item $ProcessObj->GetProcessAffinitymask( $processAffinityMask, $systemAffinitymask)
  141.  
  142. Get the process affinity mask.  This is a bitvector in which each bit
  143. represents the processors that a process is allowed to run on.
  144.  
  145. =item $ProcessObj->SetProcessAffinitymask( $processAffinityMask )
  146.  
  147. Set the process affinity mask.  Only available on Windows NT.
  148.  
  149. =item $ProcessObj->GetExitCode( $exitcode )
  150.  
  151. Retrieve the exitcode of the process.
  152.  
  153. =item $ProcessObj->Wait($timeout)
  154.  
  155. Wait for the process to die.  $timeout should be specified in milliseconds.
  156. To wait forever, specify the constant C<INFINITE>.
  157.  
  158. =item $ProcessObj->GetProcessID()
  159.  
  160. Returns the Process ID.
  161.  
  162. =back
  163.  
  164. =head1 EXPORTS
  165.  
  166. The following constants are exported by default.
  167.  
  168.     CREATE_DEFAULT_ERROR_MODE
  169.     CREATE_NEW_CONSOLE
  170.     CREATE_NEW_PROCESS_GROUP
  171.     CREATE_NO_WINDOW
  172.     CREATE_SEPARATE_WOW_VDM
  173.     CREATE_SUSPENDED
  174.     CREATE_UNICODE_ENVIRONMENT
  175.     DEBUG_ONLY_THIS_PROCESS
  176.     DEBUG_PROCESS
  177.     DETACHED_PROCESS
  178.     HIGH_PRIORITY_CLASS
  179.     IDLE_PRIORITY_CLASS
  180.     INFINITE
  181.     NORMAL_PRIORITY_CLASS
  182.     REALTIME_PRIORITY_CLASS
  183.     THREAD_PRIORITY_ABOVE_NORMAL
  184.     THREAD_PRIORITY_BELOW_NORMAL
  185.     THREAD_PRIORITY_ERROR_RETURN
  186.     THREAD_PRIORITY_HIGHEST
  187.     THREAD_PRIORITY_IDLE
  188.     THREAD_PRIORITY_LOWEST
  189.     THREAD_PRIORITY_NORMAL
  190.     THREAD_PRIORITY_TIME_CRITICAL
  191.  
  192. =cut
  193.  
  194. # Local Variables:
  195. # tmtrack-file-task: "Win32::Process"
  196. # End:
  197.