![]() |
Form screenshot
Hallo
wie kann man Form1-Screenshot erzeugen? mit dem Code wird den gesamten Bildschirm kopiert Bilder für Support zwar wichtig aber der User will gerne nur das Programm-Screen capture. Mehr nicht. Was auf seinem Bildschirm ist, darf man nicht sehen :gruebel:
Delphi-Quellcode:
ich habe versucht mit :uses JPeg, Graphics, Windows, Classes ...; var B: TBitmap; I: TJpegImage; DC: hDC; begin B := TBitmap.Create; try DC := GetDC(hWnd_Desktop); try B.Width := Screen.Width; B.Height := Screen.Height; // Screenshot als Bitmap machen BitBlt(B.Canvas.Handle, 0, 0, B.Width, B.Height, DC, 0, 0, SRCCOPY); finally ReleaseDC(DC, hWnd_Desktop); end; // Bitmap nach JPEG und speichern I := TJpegImage.Create; try I.Assign(B); I.SaveToFile('Filename hier.jpeg'); finally I.Free; end; finally B.Free; end; end; B.Width := Form1.Width; B.Height := Form2.Height; Aber das Problem ist hier in Parameter :
Delphi-Quellcode:
Ich habe versucht so :
BitBlt(B.Canvas.Handle, 0, 0, B.Width, B.Height, DC, 0, 0, SRCCOPY);
Delphi-Quellcode:
BitBlt(Result.Canvas.Handle, Form1.Left, Form1.Top, Result.Width, Result.Height, Desktop, (Form1.left+Form1.width), Form1.Top+Form1.Height, SRCCOPY);
|
Re: Form screenshot
Delphi-Quellcode:
da solltest du das handle deinies fensters uebergeben
DC := GetDC(hWnd_Desktop);
ReleaseDC(DC, hWnd_Desktop); |
Re: Form screenshot
Und hättest beim Posten auf den Button unter dem Titel geklickt, auf dem unsinnigerweise "Ähnliche Themen" steht, hättest Du auch das
![]() |
Re: Form screenshot
Zitat:
|
Re: Form screenshot
Zitat:
Delphi-Quellcode:
Function myBMPWindowSnap(var bmp: TBitmap; windowHandle: HWND): boolean;
var rc : TRect; huser32 : THandle; F : function(Hnd: HWND; HdcBlt: HDC; nFlags: UINT): BOOL; stdcall; begin Result := False; huser32 := GetModuleHandle(user32); if huser32 <> 0 then begin @F := GetProcAddress(huser32, 'PrintWindow'); if @F <> nil then begin GetWindowRect(windowHandle, rc); bmp.Width := rc.Right - rc.Left; bmp.Height := rc.Bottom - rc.Top; bmp.Canvas.Lock; try Result := F(windowHandle, bmp.Canvas.Handle, 0); finally bmp.Canvas.Unlock; if Result and ((bmp.Width = 0) or (bmp.Height = 0)) then Result := False; end; end; end; end; |
Re: Form screenshot
Ginge das nicht einfach mit GetFormImage :gruebel: ?
|
Re: Form screenshot
Zitat:
d.h. wenn ich in meinen Webbrwoser eine Seite aufrufe, dann wird nicht kopiert |
Re: Form screenshot
Von Webbrowser hast Du ja auch nichts gesagt.
|
Re: Form screenshot
Hast schon versucht das Desktophandle gegen das Handle der Anwendung auszutauschen?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz