Delphi มาเขียนโปรแกรม Capture หน้าจอกันเถอะ

โจทย์วันนี้คือ แคปเจอร์ (ทำเสียงเหมือนโทรศัพท์ซัมซุงตอนสั่งถ่ายรูปด้วยเสียง) ผมได้โจทย์มาว่าให้เมื่อ user กดปุ่มบันทึกให้ capture หน้าจอโปรแกรมขณะนั้นแล้วส่ง line เข้ากลุ่ม ปกติผมก็ใช้พวก Tool สำเร็จรูป ในการ Capture หน้าจอโปรแกรมพวกนี้แต่เพื่อลดเวลาการทำงานของ User ก็เลยต้องลองซักตั้ง
สิ่งสำคัญที่ต้องเพิ่มเข้าไปใน Project เพื่อทำงานเกี่ยวกับรูปภาพนั่นก็คือ
VCL.Imaging.JPEG
จากนั้นก็ลากๆ วางๆ

ใส่ Event ในปุ่ม Capture
procedure TForm1.Button1Click(Sender: TObject);
const
FullWindow = True; // Set to false if you only want the client area.
var
hWin: HWND;
dc: HDC;
bmp: TBitmap;
FileName: string;
r: TRect;
w: Integer;
h: Integer;
begin
form1.Hide;
sleep(500);
hWin := GetForegroundWindow;if FullWindow then
begin
GetWindowRect(hWin,r);
dc := GetWindowDC(hWin) ;
end
else
begin
Winapi.Windows.GetClientRect(hWin, r);
dc := GetDC(hWin) ;
end;w := r.Right - r.Left;
h := r.Bottom - r.Top;bmp := TBitmap.Create;
bmp.Height := h;
bmp.Width := w;
BitBlt(bmp.Canvas.Handle, 0, 0, w, h, DC, 0, 0, SRCCOPY);FileName := 'Screenshot_'+FormatDateTime('mm-dd-yyyy-hhnnss',now());
bmp.SaveToFile(Format('C:\Screenshots\%s.bmp', [FileName]));
ReleaseDC(hwin, DC);
bmp.Free;
Image1.Picture.LoadFromFile(Format('C:\Screenshots\%s.bmp', [FileName]));
form1.Show ;end;
เมื่อ Run ภาพจะกระพริบนิดหนึ่งแล้วแสดงผลออกมาครับ

เท่านี้เราก็ได้โปรแกรมสำหรับ Capture หน้าจอแล้วละครับ ส่วน code ผมได้มาจาก stack overflow แต่ก็จำ Link ไม่ได้ซะแล้ว ขอบคุณที่ติดตามครับ