المشاركات : 19
المواضيع 11
:
: 1
الإنتساب : Aug 2025
06-08-2025, 09:34 PM
(آخر تعديل لهذه المشاركة: 06-08-2025, 09:35 PM بواسطة عَمر .)
كيف اعرض Print Screen داخل Image1
كود :
keybd_event(VK_SNAPSHOT, 0, 0, 0);
المشاركات : 61
المواضيع 12
:
: 22
الإنتساب : Jul 2024
(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;
المشاركات : 19
المواضيع 11
:
: 1
الإنتساب : Aug 2025
07-08-2025, 09:54 PM
(آخر تعديل لهذه المشاركة: 07-08-2025, 09:56 PM بواسطة عَمر .)
المشاركات : 5
المواضيع 2
:
: 1
الإنتساب : Mar 2014
إستخدم
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;
المشاركات : 19
المواضيع 11
:
: 1
الإنتساب : Aug 2025
08-08-2025, 08:33 PM
(آخر تعديل لهذه المشاركة: 08-08-2025, 08:42 PM بواسطة عَمر .)
عرض سطح المكتب show desktop
ع شكل صور متتاليه
مرفق مثال للمشروع لكن لدي مشكله الحافظة تتعارض اذا قمت بنسخ ملف text من الوندوز او من المتصفحات
اقصد زر الماوس الايمن او ctrl+ c في حالة النسخ للحافظة يحصل خطأ وتعارض مع Print Screen
الذاكرة المؤقته للوندوز
التعديل ع التايمر الموضوع 2000 حاليا
يحدث كل ثانيتين
اي تغيير ع سطح المكتب يقوم بتحديث الصورة
الملفات المرفقة
779.rar (الحجم : 266.59 ك ب / التحميلات : 10)