Hello Torsten,
(danke,) this is the solution!
Kind regards,
Walter Laub
[EMAIL PROTECTED] schrieb am 18.07.2005 11:20:37:
>
> Hi,
> try this, its working on Win32 and perl doesn't print a error on HP-UX:
>
> ################# cut here #####################
>
> use strict;
>
> BEGIN {
> if ($^O eq 'MSWin32') {
> die "Unable to load Win32::OLE" unless eval 'require Win32::OLE';
> eval 'import Win32::OLE qw ( in )';
> }
> }
>
>
> sub getWinProcessId {
> # to call with getWinProcessId(ProcName)
> # returns the process id
> # returns -1 if no process found
> # returns -2 if WMI not available
> my $ProcName=$_[0];
> my $found=0;
> my $Class = "Win32_Process";
> (my $Machine = shift @ARGV || "." ) =~ s/^[\\\/]+//;
> if( my $WMIServices = Win32::OLE-> GetObject(
>
> "winmgmts:{impersonationLevel=impersonate,(security)}//$Machine" ) ) {
> foreach my $Processes ( in( $WMIServices-> InstancesOf( $Class )
> ) ) {
> #print "$Processes->{Name}: $Processes->{ProcessId}\n";
> if ( "$Processes->{Name}"=~/$ProcName/i ) {
> $found=1;
> return ($Processes-> {ProcessId});
> }
> }
> return -1;
> }
> else
> {
> # WMI does not work
> return -2;
> }
> }
>
>
> if ( $^O eq "MSWin32" ) {
> my $test=getWinProcessId("cmd.exe");
> print "$test\n";
> } else {
> print "This is not MSWin32\n";
> }
>
> ################# cut here #####################
>
>
>
>
> [EMAIL PROTECTED]
> Sent by: To:
> [email protected]
> [EMAIL PROTECTED] cc:
> eState.com
> Subject: Same script running on UNIX/WIN32, how?
>
>
> 18.07.2005 10:14
>
>
>
>
>
>
>
> Hello,
>
> I need for a bigger script (1000 lines) the capability to run the same
> script on UNIX and WIN32.
>
> As yet, I'm successfull with constructs like in the example. But now I have
> a problem with the function from the example. With "use Win32::OLE qw( in
> );", in the second line this example works fine, but not on UNIX ;-( With
> "require Win32::OLE qw( in );", like in the example, I get an error.
> Somebody with an idea?
>
> use strict;
> #use Win32::OLE qw( in );
>
> if ( $^O eq "MSWin32" ) {
> require Win32::OLE qw( in );
> my $test=&getWinProcessId("cmd.exe");
> print "$test\n";
> }
>
> sub getWinProcessId {
> # to call with &getWinProcessId(ProcName)
> # returns the process id
> # returns -1 if no process found
> # returns -2 if WMI not available
> my $ProcName=$_[0];
> my $found=0;
> my $Class = "Win32_Process";
> (my $Machine = shift @ARGV || "." ) =~ s/^[\\\/]+//;
> if( my $WMIServices = Win32::OLE-> GetObject(
> "winmgmts:{impersonationLevel=impersonate,(security)}//$Machine" ) ) {
> foreach my $Processes ( in( $WMIServices-> InstancesOf( $Class ) ) ) {
> #print "$Processes->{Name}: $Processes->{ProcessId}\n";
> if ( "$Processes->{Name}"=~/$ProcName/i ) {
> $found=1;
> return ($Processes-> {ProcessId});
> }
> }
> return -1;
> }
> else
> {
> # WMI does not work
> return -2;
> }
> }
>
>
> Kind regards,
> Walter Laub
>
> _______________________________________________
> ActivePerl mailing list
> [email protected]
> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
>
>
>
_______________________________________________ ActivePerl mailing list [email protected] To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
