in reply to save browser's result to image file

I don't know if it's possible using OLE, but using Win32::GuiTest (a brilliant tool) and Win32::Clipboard it is almost trivial.

#! perl -slw use strict; use Win32::GuiTest qw[FindWindowLike GetWindowText SetForegroundWindow + SendKeys]; use WIn32::Clipboard; my $clip = Win32::Clipboard->new(); my @windows = FindWindowLike(0, "Internet Explorer\$"); #Find it for (@windows) { SetForegroundWindow($_); # Make it active sleep 2; # Give IE chance to re-draw it's window. # Send the Alt-print screen key sequence to copy the active window + to the clipboard SendKeys("%{PRTSCR}"); } if (my $bitmap = $clip->GetBitmap()) { local $\; my $bmpfile = 'snapshot[' . time() . '].bmp'; open my $bmp, '>', $bmpfile or die $!; binmode $bmp; print $bmp $bitmap; close $bmp; print "Bitmap written to $bmpfile\n"; } else { die "Couldn't get bitmap from clipboard"; }

This code is just a throw-together and could do with much enhancment. Converting the bmp to a .png or .jpg would be a good start as the .bmp file sizes are enormous.

NOTE: As is, this will create a bmp for every window that has "Internet Explorer" at the end of it titlebar text. You may want to limit this my being more selective.


Examine what is said, not who speaks.
1) When a distinguished but elderly scientist states that something is possible, he is almost certainly right. When he states that something is impossible, he is very probably wrong.
2) The only way of discovering the limits of the possible is to venture a little way past them into the impossible
3) Any sufficiently advanced technology is indistinguishable from magic.
Arthur C. Clarke.