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 / Service.pm < prev    next >
Text File  |  2004-01-12  |  2KB  |  104 lines

  1. package Win32::Service;
  2.  
  3. #
  4. # Service.pm
  5. # Written by Douglas_Lankshear@ActiveWare.com
  6. #
  7. # subsequently hacked by Gurusamy Sarathy <gsar@activestate.com>
  8. #
  9.  
  10. $VERSION = '0.05';
  11.  
  12. require Exporter;
  13. require DynaLoader;
  14. use Win32;
  15.  
  16. die "The Win32::Service module works only on Windows NT" if(!Win32::IsWinNT());
  17.  
  18. @ISA= qw( Exporter DynaLoader );
  19. @EXPORT_OK =
  20.     qw(
  21.     StartService
  22.     StopService
  23.     GetStatus
  24.     PauseService
  25.     ResumeService
  26.     GetServices
  27.     );
  28.  
  29. =head1 NAME
  30.  
  31. Win32::Service - manage system services in perl
  32.  
  33. =head1 SYNOPSIS
  34.  
  35.     use Win32::Service;
  36.  
  37. =head1 DESCRIPTION
  38.  
  39. This module offers control over the administration of system services.
  40.  
  41. =head1 FUNCTIONS
  42.  
  43. =head2 NOTE:
  44.  
  45. All of the functions return false if they fail, unless otherwise noted.
  46. If hostName is an empty string, the local machine is assumed.
  47.  
  48. =over 10
  49.  
  50. =item StartService(hostName, serviceName)
  51.  
  52. Start the service serviceName on machine hostName.
  53.  
  54. =item StopService(hostName, serviceName)
  55.  
  56. Stop the service serviceName on the machine hostName.
  57.  
  58. =item GetStatus(hostName, serviceName, status) 
  59.  
  60. Get the status of a service.  The third argument must be a hash
  61. reference that will be populated with entries corresponding
  62. to the SERVICE_STATUS structure of the Win32 API.  See the
  63. Win32 Platform SDK documentation for details of this structure.
  64.  
  65. =item PauseService(hostName, serviceName)
  66.  
  67. =item ResumeService(hostName, serviceName)
  68.  
  69. =item GetServices(hostName, hashref) 
  70.  
  71. Enumerates both active and inactive Win32 services at the specified host.
  72. The hashref is populated with the descriptive service names as keys
  73. and the short names as the values.
  74.  
  75. =back
  76.  
  77. =cut
  78.  
  79. sub AUTOLOAD
  80. {
  81.     my($constname);
  82.     ($constname = $AUTOLOAD) =~ s/.*:://;
  83.     #reset $! to zero to reset any current errors.
  84.     local $! = 0;
  85.     my $val = constant($constname);
  86.     if ($! != 0) {
  87.     if($! =~ /Invalid/) {
  88.         $AutoLoader::AUTOLOAD = $AUTOLOAD;
  89.         goto &AutoLoader::AUTOLOAD;
  90.     }
  91.     else {
  92.         ($pack,$file,$line) = caller;
  93.         die "Your vendor has not defined Win32::Service macro $constname, used in $file at line $line.";
  94.     }
  95.     }
  96.     eval "sub $AUTOLOAD { $val }";
  97.     goto &$AUTOLOAD;
  98. }
  99.  
  100. bootstrap Win32::Service;
  101.  
  102. 1;
  103. __END__
  104.