AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Screenshot von Fenster hat falschen Titel ( mit Beispielcode )
Thema durchsuchen
Ansicht
Themen-Optionen

Screenshot von Fenster hat falschen Titel ( mit Beispielcode )

Ein Thema von stalkingwolf · begonnen am 12. Okt 2022 · letzter Beitrag vom 13. Okt 2022
 
stalkingwolf

Registriert seit: 6. Mai 2011
521 Beiträge
 
#1

Screenshot von Fenster hat falschen Titel ( mit Beispielcode )

  Alt 12. Okt 2022, 16:12
Hallo,

wir haben unten stehend Funktion zum generieren eines Screenshots von einem aktiven beliebigem Programm.
Dazu haben wir in einem Hintergrundprogramm mit RegisterHotKey(fmain.Handle, ID3, MOD_ALT, vk_f10); uns die Screenshot Funktion auf eine Tastenkombi gelegt und können somit ein Bitmap vom aktiven Fenster durchführen und dann als Bild speichern, drucken oder in die Zwischenablage kopieren.

Folgendes passiert mit dem Titel z.b reproduzierbar mit Notepad, Word, Excel usw.

1.Notepad öffnen
2.Inhalt = Test
3.Datei speichern als test.txt. Damit steht in der Titelteile "test.txt - Editor"
4.Inhalt ändern auf Test2
5.Datei speichern als test2.txt. Damit steht in der Titelteile "test2.txt - Editor"
6.Nun den Screenshot erstellen und abspeichern oder per Zwischenablage in Paint einfügen

Nun steht in dem Screenshot in der Titelzeile "test.txt - Editor"
Unter der Titelzeile also im Textbereich wird aber das korrekte im Screenshot angezeigt.

Wird zwischen Punkt 5 und 6 der Editor minimiert und wieder angezeigt passiert folgendes
- Korrekter Titel ist im Screenshot
- Titelzeile fehlt komplett im Screenshot

Im Anhang der Quellcode und das Programm.
Frage wäre wo der Fehler ist oder es eine bessere Lösung zum erstellen des Screenshot gibt.

Code:
const ID3 = $FD;

procedure ScreenShot(activeWindow: bool; destBitmap : TBitmap) ;
 var
    w,h : integer;
    DC  : HDC;
    hWin : Cardinal;
    r  : TRect;
    ProcessID : THandle;
 begin

    if activeWindow then begin
      hWin := GetForegroundWindow;
      dc := GetWindowDC(hWin) ;
      GetWindowRect(hWin,r) ;
      w := r.Right - r.Left;
      h := r.Bottom - r.Top;
    end else begin
      hWin := GetDesktopWindow;
      dc := GetDC(hWin) ;
      w := GetDeviceCaps (DC, HORZRES) ;
      h := GetDeviceCaps (DC, VERTRES) ;
    end;

    try
     destBitmap.Width := w;
     destBitmap.Height := h;
     BitBlt(destBitmap.Canvas.Handle,
            0,
            0,
            destBitmap.Width,
            destBitmap.Height,
            DC,
            0,
            0,
            SRCCOPY) ;
    finally
     ReleaseDC(hWin, DC) ;
    end;
end;

procedure Tfmain.WMHotKey(Var Msg: TMessage);
var mybitmap: TBitmap;
    d      : TDVorschau;
    clipboard:Tclipboard;
begin
    case Msg. WParam of
        id3:begin
            mybitmap := TBitmap.Create;
            Screenshot(true,mybitmap);
            clipBoard := TClipBoard.Create;
            Clipboard.Assign(mybitmap);
            ClipBoard.free;
            mybitmap.free;
        end;
end;
Angehängte Dateien
Dateityp: zip sreenshottest.zip (4,31 MB, 7x aufgerufen)

Geändert von stalkingwolf (12. Okt 2022 um 16:22 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:15 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