http://qs1969.pair.com?node_id=158292


in reply to Re: How to capture screen under Win32?
in thread How to capture screen under Win32?

Actually you can put images into Win32::Clipboard but the gotcha is that if your screen depth is set to 32bit and NOT 24bit, the resulting BMP is not valid for most apps.

I have some ugly code to fix 32bit BMPs to 24bit, let me know if you want to see it.

as for the code to put a screenshot into the clipboard, see below

use strict; use Win32::OLE; use Win32::Clipboard; use Win32::GuiTest qw(FindWindowLike GetWindowText SetForegroundWindow + SendKeys); my $ie; my $image; # use existing instance if Internet Explorer is already running eval {$ie = Win32::OLE->GetActiveObject('InternetExplorer.Application' +)}; die "IE not installed" if $@; unless (defined $ie) { $ie = Win32::OLE->new('InternetExplorer.Application', sub {$_[0]->Qu +it;}) or die "Oops, cannot start IE"; } $ie->{Visible} = 1; # get the handle and use it to force IE to the foreground SetForegroundWindow($ie->HWND); # use send keys # How Do I Maximise The Current Window, Without Using The Mouse? # Press (SHIFT + ALT + SPACEBAR) then press X SendKeys("%+{SPACEBAR}{PAUSE 5}X"); # How do I get a screen grab, use Print Screen to grab entire screen # use ALT + PRTSCR to get current window or dialog NOT screen ! SendKeys("%{PRTSCR}"); $image = Win32::Clipboard::GetBitmap(); # $image now contains your .BMP

Cheers

Cheshire Cat