Perl win32 :: GUI线程

时间:2013-03-06 03:46:00

标签: multithreading perl

我编写了一个连接主机系统的脚本,并使用Win32 :: GUI模块运行一些命令来输入命令。

当它正在进行中时,GUI会冻结并且在完成之前没有响应。

有人能告诉我如何为这种情况实现线程。

1 个答案:

答案 0 :(得分:0)

use strict;

use warnings;use Net::Telnet; use Win32::API; use Win32::GUI();

my $main = Win32::GUI::Window->new(
  -name => 'Main',
  -width => 500,
  -height => 900,
  -text => 'Perl',
  -minsize => 500, 900,
  );

my $font = Win32::GUI::Font->new( -name => "Comic Sans MS", -size => 8,);
$main->AddLabel(-text => "Welcome ", -pos  => [ 10, 10 ],);
$main->AddLabel(-text => "Enter Host Name / IP : ", -pos  => [ 10, 33 ],  );
my $t= $main->AddTextfield( -name => 'tfResults', -text => "", -pos  => [ 125, 30 ],  -size => [ 100, 25 ], -tabstop => 1, );
my $my_but = $main->AddButton(-text => "Submit",-name => 'btQuery', -pos  => [ 235, 30 ],-size => [ 50, 25 ],);
$main->Show(); 
Win32::GUI::Dialog();

sub btQuery_Click 
{

  my $txt1=$t->Text;  
  my $telnet = new Net::Telnet (   Timeout=>1800,    Errmode=>'die',    ); 
  chomp $txt1; 
  $telnet->open($txt1);

  $telnet->waitfor('/login: $/i');
  $telnet->print('root');
  $telnet->waitfor('/Password: $/i');
  $telnet->print('dangerous');
  $telnet->waitfor('/# $/i');
  print "\nConnected to host :$txt1 ";

  $main->AddLabel(-text => " Enter custom cmd:",-pos => 100, 100 ,-size => 250, 125 ,);
  my $t1= $main->AddTextfield(-name => 'tfResults2',-text => "",-pos => 130, 100 ,-size => 100, 25 ,);
  my $submit=$main->AddButton(-text => "Submit",-name => 'Unix_submit',-pos => 250, 100 ,-size => 50, 25 ,);



sub Unix_submit_Click { }

   } `