?
Solved

Snapshot of desktop

Posted on 2000-04-25
2
Medium Priority
?
338 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 150 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

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
In this video we outline the Physical Segments view of NetCrunch network monitor. By following this brief how-to video, you will be able to learn how NetCrunch visualizes your network, how granular is the information collected, as well as where to f…
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …
Suggested Courses
Course of the Month13 days, 12 hours left to enroll

800 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