delphi4arab منتديات دلفي للعرب
كيف اعرض Print Screen داخل Image - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف اعرض Print Screen داخل Image (/showthread.php?tid=12957)



كيف اعرض Print Screen داخل Image - عَمر - 06-08-2025

كيف اعرض  Print Screen داخل Image1

كود :
keybd_event(VK_SNAPSHOT, 0, 0, 0);



RE: كيف اعرض Print Screen داخل Image - mo7ammed - 07-08-2025

(06-08-2025, 09:34 PM)عَمر كتب : كيف اعرض  Print Screen  داخل Image1

كود :
keybd_event(VK_SNAPSHOT, 0, 0, 0);


من خلال استخدام و حدة Clipbrd، يمكن استخدام  LoadFromClipboardFormat لقراءة الصورة من ال clipboard

كود :
uses   Vcl.Clipbrd;   procedure TForm1.btn2Click(Sender: TObject); begin   img1.Picture.LoadFromClipboardFormat(CF_BITMAP,Clipboard.GetAsHandle(CF_BITMAP),0); end;



RE: كيف اعرض Print Screen داخل Image - عَمر - 07-08-2025

%100............

كود :
Clipbrd


يقبل


RE: كيف اعرض Print Screen داخل Image - brave - 08-08-2025

إستخدم BitBlt 
كود :
procedure BitBltFullScreen(aImage: TImage); const   CAPTUREBLT = $40000000; var   LScreenDC, LMemDC: HDC;   LBitmap: HBITMAP;   LBMP: TBitmap;   LScreenWidth, LScreenHeight: Integer; begin   LScreenWidth := GetSystemMetrics(SM_CXSCREEN);   LScreenHeight := GetSystemMetrics(SM_CYSCREEN);   LBMP := TBitmap.Create;   try     LBMP.PixelFormat := pf24bit;     LBMP.Width := LScreenWidth;     LBMP.Height := LScreenHeight;     LScreenDC := GetDC(0);     LMemDC := CreateCompatibleDC(LScreenDC);     LBitmap := CreateCompatibleBitmap(LScreenDC, LScreenWidth, LScreenHeight);     SelectObject(LMemDC, LBitmap);     BitBlt(LMemDC, 0, 0, LScreenWidth, LScreenHeight, LScreenDC, 0, 0, SRCCOPY or CAPTUREBLT);     LBMP.Handle := LBitmap;     aImage.Picture.Assign(LBMP);     DeleteDC(LMemDC);     ReleaseDC(0, LScreenDC);   finally     LBMP.Free;   end; end; procedure BitBltWindow(aHWnd: HWND; aImage: TImage); const   cCAPTUREBLT = $40000000; var   LWindowDC, LMemDC: HDC;   LBitmap: HBITMAP;   LBMP: TBitmap;   LRect: TRect;   LWidth, LHeight: Integer; begin   if not IsWindow(aHWnd) then     Exit;   // Get the window size   GetWindowRect(aHWnd, LRect);   LWidth := LRect.Right - LRect.Left;   LHeight := LRect.Bottom - LRect.Top;   LBMP := TBitmap.Create;   try     LBMP.PixelFormat := pf24bit;     LBMP.Width := LWidth;     LBMP.Height := LHeight;     // Get window device context     LWindowDC := GetWindowDC(aHWnd); // Use GetDC(aHWnd) for client area only     LMemDC := CreateCompatibleDC(LWindowDC);     LBitmap := CreateCompatibleBitmap(LWindowDC, LWidth, LHeight);     SelectObject(LMemDC, LBitmap);     // Copy the window content into memory DC     BitBlt(LMemDC, 0, 0, LWidth, LHeight, LWindowDC, 0, 0, SRCCOPY or cCAPTUREBLT);     // Assign result to TImage     LBMP.Handle := LBitmap;     aImage.Picture.Assign(LBMP);     // Cleanup     DeleteDC(LMemDC);     ReleaseDC(aHWnd, LWindowDC);   finally     LBMP.Free;   end; end;
و الإستخدام كالآتي:

كود :
procedure TForm1.BtnPrintScreenClick(Sender: TObject); begin   BitBltFullScreen(imgScreenShot); //  BitBltWindow(FindWindow('TAppBuilder', nil), imgScreenShot); end;



RE: كيف اعرض Print Screen داخل Image - عَمر - 08-08-2025

عرض سطح المكتب show desktop
ع شكل صور متتاليه

مرفق مثال للمشروع لكن لدي مشكله الحافظة تتعارض اذا قمت بنسخ ملف text من الوندوز او من المتصفحات
اقصد زر الماوس الايمن  او ctrl+ c في حالة النسخ للحافظة يحصل خطأ وتعارض مع Print Screen


كود :
Clipboard


الذاكرة المؤقته للوندوز

التعديل ع التايمر الموضوع 2000 حاليا
يحدث كل ثانيتين
اي تغيير ع سطح المكتب يقوم بتحديث الصورة