![]() |
|
كيف اعرض 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 من خلال استخدام و حدة 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 حاليا يحدث كل ثانيتين اي تغيير ع سطح المكتب يقوم بتحديث الصورة |