[Perl] Manager 0.3

Iniciado por BigBear, 19 Enero 2012, 20:35 PM

0 Miembros y 1 Visitante están viendo este tema.

BigBear

Un simple script para manejar los procesos en Windows.

Código (perl) [Seleccionar]

#!usr/bin/perl
#Manager 0.3
#Written By Doddy H

use Color::Output;
Color::Output::Init;
use Win32::OLE qw(in);
use Win32::Process;

&clean;
&options;

sub clean {
   cprint "\x0313";
   print
"\nManager 0.3\nCopyright 2012 Doddy Hackman\nMail:lepuke[at]hotmail[com]\n\n";
   cprint "\x0x30\n\n";
   my %process = getprocess();
   chomp %process;
   $limit = "";
   for my $pid ( keys %process ) {
       if ( $pid ne "" ) { $limit++ }
       push( @procer, $process{$pid} );
       push( @pids,   $pid );
       chomp( @procer, @pids );
   }
   $limit--;
   for my $n ( 1 .. $limit ) {
       cprint "\x037";
       print
         "Process Number: [$n]\tProcess name : $procer[$n]\tPID : $pids[$n]\n";
       cprint "\x037";
   }
}

sub options {
   cprint "\0035";
   print
"\n\nOptions :\n\n[a] : Close a process\n[b] Clean Console\n[c] Exit\n\n\n[+] Write you options : ";
   $t = <STDIN>;
   chomp $t;
   if ( $t eq "a" ) {
       &close;
   }
   elsif ( $t eq "b" ) {
       reload();
   }
   elsif ( $t eq "c" ) {
       print "\n\n[+] Written By Doddy H\n\n";
       <stdin>;
       exit(1);
   }
   else {
       reload();
   }
}

sub close {
   print "\n[+] Write the number of the process : ";
   $numb = <STDIN>;
   chomp $numb;
   Win32::Process::KillProcess( @procer[$numb], "" );
   print "\n\n[+] OK , Process Closed\n\n";
   <stdin>;
   reload();
}

sub reload {
   system("cls");
   system($0);
   &clean;
   &options;
}

sub getprocess {

   my %procesos;

   my $uno = Win32::OLE->new("WbemScripting.SWbemLocator");
   my $dos = $uno->ConnectServer( "", "root\\cimv2" );

   foreach my $pro ( in $dos->InstancesOf("Win32_Process") ) {
       $procesos{ $pro->{Caption} } = $pro->{ProcessId};
   }
   return %procesos;
}

# The End ?