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 hier gefunden. Und sag keinem weiter, dass das Dein eigener Thread ist! :roll:
|
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 20:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz