Some time ago, I began to develop an http server providing catch graphic web page.
Not having had the benefit of these programs, I decided to post on this blog, hoping that this work will help you.
This is a first draft functional, but nevertheless deserves to be better, so if you have any updates, be sure to join me, I’ll post them here.
The principle is very simple, the system consists of two distinct parts:
- Server for graphic web page capture (written in Delphi and based on Internet Explorer activeX).
- browser (to facilitate testing I wrote a client in Flex-AIR to automate the server protocol).
The server:
After you learn the IP and port used, simply start the server, and that’s all. The other parameters are there to fix more precisely how it works.
However, I have included the ability to retouch coarsely catches.
Some screenshots:
![]() |
![]() |
![]() |
![]() |
Web browser:
For a snapshot from the server, there are three things to do:
1 / Create a query capture :
To do this, simply call with your favorite browser, this type of application:
http://YourIP:YourPort/index.html?Action=SetCapture&Url=http://www.free.fr &SrcWidth=953&SrcHeight=1235&Static=true&CaptureDelay=0& …
To Server :
‘Action’ = ‘SetCapture’ => Needed
‘Url’ => String of Url to capture => Needed
‘SrcWidth’ => Integer : Width of original Web page => Needed
‘SrcHeight’ => Integer : Height of original Web page => Needed
‘Static’ => Boolean (‘true’ or ‘false’) => Default = true
‘EmptyCache’ => Boolean (‘true’ or ‘false’) => Default = true
if Static = false
‘CaptureDelay’ => Integer : Delay before screenshot after page completed => Default = 0
‘OffsetTop’ => Integer => Default = 0
‘OffsetLeft’ => Integer => Default = 0
‘OffsetBottom’ => Integer => Default = 0
‘OffsetRight’ => Integer => Default = 0
‘Quality’ => Integer => Default = 75 (%)
‘Zoom’ => Decimal : Zoom factor (0.1..500) => Default = 1
From Server :
xml => <result><action>SetCapture</action><data>D1B831BF76B56038A6B0ADD3DDD663BA</data></result>
« D1B831BF76B56038A6B0ADD3DDD663BA » is a single value returned by the server, used to identify your request.
2 / Ensure that the catch has been made :
To do this simply call, this request containing the ID provided by the first query:
http://YourIP:YourPort/index.html?Action=IsCaptureReady&Id=D1B831BF76B56038A6B0ADD3DDD663BA
To Server :
‘Action’ = ‘IsCaptureReady’
‘Id’ => String => Needed
From Server :
xml => <result><action>IsCaptureReady</action><data>(‘true’or ‘false’)</data></result>
3 /Finally, if the answer is positive, download the image with the following query :
http://YourIP:YourPort/index.html?Action=GetCapture&Id=D1B831BF76B56038A6B0ADD3DDD663BA
To Server :
‘Action’ = ‘GetCapture’
‘Id’ => String => Needed
From Server :
JPG => Image File
The AIR application:
It will manage (in an automatic way to catch) and interrogate the server, whether the final image is ready to be downloaded, and finally display the result.

As always, it is the spirit of this blog, you will find various files to download below:
Server Source
Server Windows exe.
Viewer source
Viewer AIR




