Solved

Snapshot of desktop

Posted on 2000-04-25
2
322 Views
Last Modified: 2010-04-04
How can I make a snapshot of the desktop with Delphi?
0
Comment
Question by:dluedi
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 6

Expert Comment

by:DrDelphi
ID: 2748933
This is getting to be my favorite question! <g>

You could download my TScreenGrab component from www.drdelphi.com OR

procedure TForm1.Button1Click(Sender: TObject);
begin
grabdesktoprect(rect(0,0,Screen.width,Screen.height),'C:\windows\desktop\test.bmp');
end;

function TForm1.GrabDesktopRect(rect: Trect; Fname: string): Boolean;
var tempbmp:Tbitmap;
    tempcanvas:Tcanvas;
begin
    tempbmp:=TBitmap.create;
    with tempbmp do
    begin
      height:=rect.bottom-rect.top;
      width:=rect.right-rect.left;
    end;
    tempcanvas:=TCanvas.create;
    TempCanvas.handle:= GetWindowDc(GetDeskTopwindow);
    tempbmp.Canvas.CopyRect(rect,tempcanvas,rect);
    tempbmp.savetofile(fname);
    tempbmp.Free;
    TempCanvas.free;
end;

end.


Your choice.

Good luck!!

0
 
LVL 3

Accepted Solution

by:
f15iaf earned 50 total points
ID: 2749485
 An application can simulate a press of the PRINTSCREEN key in order to obtain a screen snapshot and save it to the Windows  clipboard. To do this, call  keybd_event  with the  bVk  parameter set to VK_SNAPSHOT, and the  bScan  parameter set to 0 for a  snapshot of the full screen or set  bScan  to 1 for a snapshot of the active window.  



keybd_event          
 
 The  keybd_event  function synthesizes a keystroke. The system can use such a synthesized keystroke to generate a  WM_KEYUP   or  WM_KEYDOWN  message. The keyboard driver's interrupt handler calls the  keybd_event  function.  
 
 VOID keybd_event(
 
      BYTE   bVk ,           // virtual-key code    
     BYTE   bScan ,           // hardware scan code    
     DWORD   dwFlags ,           // flags specifying various function options    
     DWORD   dwExtraInfo             // additional data associated with keystroke    
    );             
   
 
 Parameters
 
 bVk
 
 Specifies a virtual-key code. The code must be a value in the range 1 to 254.  
 
 bScan
 
 Specifies a hardware scan code for the key.  
 
 dwFlags
 
 A set of flag bits that specify various aspects of function operation. An application can use any combination of the following  predefined constant values to set the flags:  
 
  Value           Meaning    
 KEYEVENTF_EXTENDEDKEY           If specified, the scan code was preceded by a prefix byte having the  value 0xE0 (224).    
 KEYEVENTF_KEYUP           If specified, the key is being released. If not specified, the key is  being depressed.    
   
 
 dwExtraInfo
 
 Specifies an additional 32-bit value associated with the key stroke.  
 
   
 
 Return Values
 
 This function has no return value.  
 
 Remarks
 
 Although  keybd_event  passes an OEM-dependent hardware scan code to Windows, applications should not use the scan code.  Windows converts scan codes to virtual-key codes internally and clears the up/down bit in the scan code before passing it to  applications.  
  An application can simulate a press of the PRINTSCREEN key in order to obtain a screen snapshot and save it to the Windows  clipboard. To do this, call  keybd_event  with the  bVk  parameter set to VK_SNAPSHOT, and the  bScan  parameter set to 0 for a  snapshot of the full screen or set  bScan  to 1 for a snapshot of the active window.  
 
 See Also
 
 GetAsyncKeyState ,  GetKeyState ,  MapVirtualKey ,  SetKeyboardState  
 
 
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
How to Install VMware Tools in Red Hat Enterprise Linux 6.4 (RHEL 6.4) Step-by-Step Tutorial

756 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question