steal screen

hi,
iam a student and iam  working in a
"Network Monitoring" by stealing other users screen so i need any information that can help especially for a start
a function that can help me to access
the vedio RAM
i looking forward to listen from u
abeerAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

brunoheCommented:
I think you're on the wrong way. What you need is something like VNC, the Virtual Network Client from Olivetti. You can take a look at

www.vnc.net (hope that's the url)

where you can get also the sources.
0
abeerAuthor Commented:
which way that is wrong?
0
brunoheCommented:
You can't handle the amount of data from the video ram. one possibility might be to create every 500ms a screenshot and compress it with a very fast algorithm and send it over the network.

The problem is that it's very difficult to get a program running which is reading directly from the vram. It must be up in kernelmode (when you are using NT) and that's very dangerous if you don't know 100 percent what you're doing.
If you're a guru in delphi, NT internals and system programming - try to do it. But it would me x times easier to stay in usermode, believe me.
0
Exploring SQL Server 2016: Fundamentals

Learn the fundamentals of Microsoft SQL Server, a relational database management system that stores and retrieves data when requested by other software applications.

abeerAuthor Commented:
hi,
am acomputer student I have aproject in "network monitoring " .the idea of this project is:
we have network in our labs .we want the teacher to monitor and control studens screens ,and send and recieve messages from them .I hope that you can give me some information about how to monitor screen from other computer?
THANKS
 abeer
0
nricoCommented:
I believe you can get the complete screen's DC by doing:

HDC:=GetDC(GetDesktopWindow());

or something like that. You can look up the names in the Win32 API reference :-).

But brunohe is right, those screengrabs from all those different computers completely trash your network speed.
0
brunoheCommented:
Look at the VNC sources. They are written in C and downloadable and I think they contain the information you need...
0
abeerAuthor Commented:
hi,
the internet address you have specified for me to visit not accessable (www.vnc.net).I want to see only one screen  not all at the same time is this will effect in the netwotk speed?
thanks
abeer
0
bryan7Commented:
I have made a program in delphi which does that.. it gets the screen, and sends it to you, you can select the jpg % to reduce the size, and even check what size will be the incoming image to adjust it to you internet speed
0
RadlerCommented:
listening...
0
AttarSoftwareCommented:
how about:

procedure GrabScreen( var jpg : tJPEGImage ; compression : longint ) ;
var
  b : tBitmap ;
  dc : hDC ;
begin
  jpg.CompressionQuality := compression ;
  b := tBitmap.Create ;
  b.width := screen.width ;
  b.height := screen.height ;
  dc := GetDC( 0 ) ;
  BitBlt( b.Canvas.Handle, 0, 0, b.width, b.height, dc, 0, 0, SRCCOPY ) ;
  jpg.Assign( b ) ;
  jpg.Compress ;
  ReleaseDC( 0, dc ) ;
  b.Free ;
end ;

procedure TForm1.Button1Click(Sender: TObject);
var
  jpg : tJpegImage ;
begin
  jpg := tJpegImage.Create ;
  GrabScreen( jpg, SpinEdit1.Value ) ;
  jpg.SaveToFile( 'C:\screen.jpg' ) ;
  jpg.free ;
end;

Now that code will save the screen to a local file, so all you have to do is add a server socket, and send the image over the socket in response to a request, and there you go...

1280x1024 screen grab at 100% = 171k
1280x1024 screen grab at 0% = 41k

But the 0% one is unreadable, you just get an idea of what they are doing... heh :)

Good luck, and hope I havent repeated anyone...

Tim.
0
AttarSoftwareCommented:
Oh yeah, dont forget that the sockets tend to chop things in to 8k packets, so when you are recieving the image, you might be wise to convert it back to a bitmap, and then send it over in tBitmap.scanline packets yourself (obviously you will have to send the number of lines you are sending first, so that the client who is reading the image knows when it has finished)...

Again, good luck,

Tim.
0
bryan7Commented:
if you look in the info of the user williams2 you'll see in his answered question, one that has a complete example with full code, that grabs a screen, and sends it throught tcp/ip, there's the example for the client and server part. it uses Fpiette's twsocket.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
abeerAuthor Commented:
hi,
how can I find williams2 tell me ,how can Isearch about he?
thanks
0
bryan7Commented:
here it is

http://www.experts-exchange.com/jsp/qShow.jsp?ta=delphi&qid=10104621 

when saving to JPEG you can also use GRAYSCALE which will reduce about 5..10 k the image size
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Delphi

From novice to tech pro — start learning today.