Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

Re: How to hide window with Win32:API?

by dada (Chaplain)
on Oct 28, 2002 at 13:16 UTC ( #208493=note: print w/replies, xml ) Need Help??

in reply to How to hide window with Win32:API?

you have several options:
  1. use the wperl.exe provided with ActivePerl to run your script. this is a copy of perl.exe that just doesn't create a console window at all. remember, however, that you have no STDIN/STDOUT/STDERR, so you can't even catch errors. be sure your script is totally bulletproof before calling it with wperl.exe. also note that more info about this method are available here.
  2. use Win32::GUI and the following lines:
    use Win32::GUI; my $hw = Win32::GUI::GetPerlWindow(); Win32::GUI::Hide($hw);
  3. use Win32::API, but this requires a lot of work:
    use Win32::API 0.20; # just for completeness... use constant SW_HIDE => 0; use constant SW_SHOWNORMAL => 1; # the API we need my $GetConsoleTitle = new Win32::API('kernel32', 'GetConsoleTitle', 'P +N', 'N'); my $SetConsoleTitle = new Win32::API('kernel32', 'SetConsoleTitle', 'P +', 'N'); my $FindWindow = new Win32::API('user32', 'FindWindow', 'PP', 'N'); my $ShowWindow = new Win32::API('user32', 'ShowWindow', 'NN', 'N'); # save the current console title my $old_title = " " x 1024; $GetConsoleTitle->Call( $old_title, 1024 ); # build up a new (fake) title my $title = "PERL-$$-".Win32::GetTickCount(); # sets our string as the console title $SetConsoleTitle->Call( $title ); # sleep 40 milliseconds to let Windows rename the window Win32::Sleep(40); # find the window by title $hw = $FindWindow->Call( 0, $title ); # restore the old title $SetConsoleTitle->Call( $old_title ); # hide the console! $ShowWindow->Call( $hw, SW_HIDE ); # sleep one second, then show the console again sleep(1); $ShowWindow->Call( $hw, SW_SHOWNORMAL );
    what the above code does is exactly what Win32::GUI does (a nasty trick I've found in the MSDN documentation :-).


King of Laziness, Wizard of Impatience, Lord of Hubris

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (3)
As of 2022-05-18 12:49 GMT
Find Nodes?
    Voting Booth?
    Do you prefer to work remotely?

    Results (70 votes). Check out past polls.