<?xml version="1.0" encoding="windows-1252"?>
<node id="20483" title="Simple WIN32 Service Test" created="2000-06-29 19:49:37" updated="2005-08-15 10:33:34">
<type id="1980">
snippet</type>
<author id="19840">
mrmick</author>
<data>
<field name="doctext">
</field>
<field name="snippetdesc">
This is a simple test to see the status of WIN32 services. 
On Windows NT4.  I have to give [barndoor] credit for the 
WIN32::Service reference because today is the first time I 
saw it.  After playing with it, I figured I would try to 
get all services and their status.  One problem:  Some 
services don't seem to return a CurrentState value.  I 
decided to ignore these and only stick with the set that 
[barndoor] has provided.</field>
<field name="snippetcode">
&lt;CODE&gt;
use Win32::Service;
 
 #set up a hash of known service states
my %statcodeHash = (
     '1' =&gt; 'stopped.',
     '2' =&gt; 'start pending.',
     '3' =&gt; 'stop pending.',
     '4' =&gt; 'running.',
     '5' =&gt; 'continue pending.',
     '6' =&gt; 'pause pending.',
     '7' =&gt; 'paused.'
);
        
my %serviceHash;

 #go get 'em...
Win32::Service::GetServices("", \%serviceHash);

foreach $key(keys %serviceHash){
     my %statusHash;
     Win32::Service::GetStatus("", "$key", \%statusHash);
     if ($statusHash{"CurrentState"} =~ /[1-7]/){
          print $serviceHash{"$key"} . " is currently " . $statcodeHash{$statusHash{"CurrentState"}} . "\n";
     }
}
&lt;/CODE&gt;</field>
</data>
</node>
