ارسال صورة سطح المكتب لملف وورد من دلفي
#2
وعليكم السلام
المثال الأول:
مكون TImage و TButton ثم:
PHP كود :
function GetScreenShot: TBitmap;
var
  
Desktop: HDC;
begin
  Result  
:= TBitmap.Create;
  
Desktop := GetDC(0);
  try
    try
      
Result.PixelFormat := pf32bit;
      
Result.Width := Screen.Width;
      
Result.Height := Screen.Height;
      
BitBlt(Result.Canvas.Handle, 0, 0, Result.Width, Result.Height, Desktop, 0, 0, SRCCOPY);
      
Result.Modified := True;
    finally
      
ReleaseDC(0, Desktop);
    
end;
  
except
    Result
.Free;
    
Result := nil;
  
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1
.Picture.Bitmap := GetScreenShot;
end; 
المثال الثاني: نفسه الأول فقط بـ TButton ثم:
PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
var 
DCDesk: HDC; // hDC of Desktop
  
bmp: TBitmap;
begin
  
{Create a bitmap}
  
bmp := TBitmap.Create;

  {
Set a bitmap sizes}
  
bmp.Height := Screen.Height;
  
bmp.Width := Screen.Width;

  {
Get a desktop DC handle - handle of a display device context}
  
DCDesk := GetWindowDC(GetDesktopWindow);

  {
Copy to any canvas, here canvas of an image}
  
BitBlt(bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height,
         
DCDesk, 0, 0, SRCCOPY);

  {
Save the bitmap}
  
bmp.SaveToFile('c:\ScreenShot.bmp');

  {
Release desktop DC handle}
  
ReleaseDC(GetDesktopWindow, DCDesk);

  {
Release a bitmap}
  
bmp.Free;
end; 
الصورة مخزنة في c:\ScreenShot.bmp
مثال ثالث (أفضل لإصدارات Windows الحديثة):
PHP كود :
procedure CaptureScreen(AFileName: string);
const
  
CAPTUREBLT = $40000000;
var
  
hdcScreen: HDC;
  
hdcCompatible: HDC;
  
bmp: TBitmap;
  
hbmScreen: HBITMAP;
begin
  
// Create a normal DC and a memory DC for the entire screen. The
  // normal DC provides a "snapshot" of the screen contents. The
  // memory DC keeps a copy of this "snapshot" in the associated
  // bitmap.

  
hdcScreen := CreateDC('DISPLAY', nil, nil, nil);
  
hdcCompatible := CreateCompatibleDC(hdcScreen);
  
// Create a compatible bitmap for hdcScreen.

  
hbmScreen := CreateCompatibleBitmap(hdcScreen,
    
GetDeviceCaps(hdcScreen, HORZRES),
    
GetDeviceCaps(hdcScreen, VERTRES));

  
// Select the bitmaps into the compatible DC.
  
SelectObject(hdcCompatible, hbmScreen);
  
bmp := TBitmap.Create;
  
bmp.Handle := hbmScreen;
  
BitBlt(hdcCompatible,
    
0, 0,
    
bmp.Width, bmp.Height,
    
hdcScreen,
    
0, 0,
    
SRCCOPY or CAPTUREBLT);

  
bmp.SaveToFile(AFileName);
  
bmp.Free;
  
DeleteDC(hdcScreen);
  
DeleteDC(hdcCompatible);
end; 
للاستخدام TButton ثم:
كود :
procedure TForm1.Button1Click(Sender: TObject); begin CaptureScreen('c:\ScreenShot.bmp'); end;
بالتوفيق.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد


الردود في هذا الموضوع
ارسال صورة سطح المكتب لملف وورد من دلفي - بواسطة kachwahed - 27-02-2010, 11:29 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم