Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Thread implementation for Win32::GUI

by ckant8 (Acolyte)
on Mar 27, 2013 at 09:14 UTC ( #1025656=perlquestion: print w/ replies, xml ) Need Help??
ckant8 has asked for the wisdom of the Perl Monks concerning the following question:

Hi, I am looking for the help to build a small internal GUI tool using Perl. I am unable to implement the thread in Perl using Win32::GUI. Could anybody post documentation, examples regarding this. Thanks Sri

Comment on Thread implementation for Win32::GUI
Re: Thread implementation for Win32::GUI
by Corion (Pope) on Mar 27, 2013 at 09:17 UTC

    What code have you written and where do you encounter problems?

      Please find below code. When i am running it window is freezing. i want to implement thread to not to freeze UI while background process is going on.
      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', -p +os => [ 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 ,-siz +e => 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 { } }

        I recommend moving the actual work to be done into its own thread, most likely by using threads and Thread::Queue for the communication. Maybe the worker thread can signal to the main/UI thread by sending a window message.

        If you add:

        use strict; use warnings;

        To the top of your program and then fix-up all the warnings you get; and then format your code so that it is readable; and post that.

        And then explain why you are defining functions within functions?

        And then explain what problems you are having adding threading?

        You might get some help.


        With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice.
      Thx Corion. Could you please let me know where to start thread, after "$main = Win32::GUI::Window->new( -name => 'Main', -width => 500, -height => 800, -text => 'Perl', -minsize => 500, 800, );" or before that??

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1025656]
Approved by herveus
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (6)
As of 2014-12-28 09:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (180 votes), past polls