| >print "->\n";
| >`C:\\Setups\\Develop\\Perl\\Win32\\ActivePython-2.0.0.202.msi`;
| >print "<-\n";
| 
| If this is all that is in your script, then it will work, but 
| once I add 
| something like this to be called once a button is clicked on, 
| then it doesn't. 

Nope - the three lines are actually in a click sub. The calling Win32::GUI
program freezes while the backtick works (because backtick returns output,
it waits for the called thing to finish). I can click around in the perl
window and when I come back from the installer, the queued messages get
called.

Okay, here's a workaround to try if that's not what happens on your machine.
In your click sub, set a variable and return -1. This terminates your
message loop. Do the backtick outside the Win32::GUI::Dialog like this:

for (;;)
{
        undef $install;
        Win32::GUI::Dialog ();
        last unless $install;
        `$install`;
        #`install some more`;
        Win32::GUI::GetMessage (0, 0x200, 0x206) while
Win32::GUI::PeekMessage (0, 0x200, 0x206);
        # kill all pending clicks the bored user has caused
}
sub Launch_Click
{
        $install = "C:\\somewhere\\something.msi";      # or just a bool
        return -1;
}

Reply via email to