Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Re: Launching a Win32::GUI app without launching a terminal

by the_slycer (Chaplain)
on Oct 02, 2001 at 23:33 UTC ( #116244=note: print w/replies, xml ) Need Help??

in reply to Launching a Win32::GUI app without launching a terminal

It's not possible to do it without launching the command prompt. You can hide the command prompt immediately after the GUI is launched, but it still needs to be there for a second.

There are a couple of ways of doing this. First off, with Win32::Gui you can use something like:
my ($dos) = Win32::GUI::GetPerlWindow(); Win32::GUI::Hide($dos);
That you can use within the application and it will hide the DOS window/command prompt almost immediately.

And I've used the following to perform the same function in TK, though this is a "wrapper" program to launch a program and it exits. So, this program runs in a command prompt, which exits, and launches a new perl interpreter that does not open a command prompt.
#!/usr/bin/perl -w # loader - starts Perl scripts without the annoying DOS window use strict; use Win32; use Win32::Process; # Create the process object. Win32::Process::Create($Win32::Process::Create::ProcessObj, 'C:/perl5/bin/perl.exe', # Whereabouts of Perl 'perl realprogram', # 0, # Don't inherit. DETACHED_PROCESS, # ".") or # current dir. die print_error(); sub print_error() { return Win32::FormatMessage( Win32::GetLastError() ); }
The second example is word for word from the O'Reilly cookbook, section 15.17

And lastly, if you are using ActiveState perl, you can probably use wPerl.exe to launch the app (instead of just perl.exe) and that should do the trick.

Replies are listed 'Best First'.
Re: Re: Launching a Win32::GUI app without launching a terminal
by jlongino (Parson) on Oct 03, 2001 at 01:50 UTC
    Although I don't know what's going on behind the scenes, as it may be hiding the command window as described above, but you could look into using Perl2exe and compile your script using the -gui option. The documentation states using the -gui option will:
    Create a no-console executable. This can be used for Tk and Win32::GUI applications. I/O to STDOUT and STDIN will not be visible. Applies to Win32 version only.
    I've tried it and it seems to work as advertised.

    "Make everything as simple as possible, but not simpler." -- Albert Einstein

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://116244]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (5)
As of 2020-05-31 07:49 GMT
Find Nodes?
    Voting Booth?
    If programming languages were movie genres, Perl would be:

    Results (173 votes). Check out past polls.