Bildschirmaufnahme mit Lazarus Programmen

Rund um die LCL und andere Komponenten
Antworten
MmVisual
Beiträge: 1158
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 2.0.10 FPC 3.2)
CPU-Target: 32/64Bit

Bildschirmaufnahme mit Lazarus Programmen

Beitrag von MmVisual »

Hallo,

Mit der Webseite "https://recorder.calipio.com/record" kann man Bildschirm Aufnahmen erstellen und diese mit anderen Teilen

Dazu drückt man "Aufnahme" dann kann man die jeweilige EXE auswählen, die man aufnehmen möchte.

Alle Programme funktionieren, außer die Lazarus Programme, da zeigt es nur einen schwarzen Bildschirm. Aus irgend einem Grund kann das System nicht das Haupt-Window finden.

Test mit Lazarus: Projekt -> Neu -> Neue Anwendung
Überstzen und diese leere EXE einfach starten, keine Einstellung geändert.

Dann sie Screen-Recorder Seite öffnen und "Aufnahme", dann das "Project1" auswählen.
Bild1.png
Bild1.png (6.01 KiB) 646 mal betrachtet
Im Prinzip finde ich es ein "Sicherheits-Feature" dass man die EXE nicht so einfach automatisch lesen kann, man sollte es dennoch abschalten können, so dass eine Bildschirm-Aufnahme möglich ist.

Für mich sieht es so aus als Ob Lazarus im Hintergrund ein "Splash Screen" erzeugt, und darauf zugreift. Beim neuen Projekt ist "FPC-Logo ausgeben (-l)" aktiviert, auch das Deaktivieren ändert nichts daran, es wird dennoch ein schwarzes Quadrat gezeigt und nicht das Formular.

Der Hersteller der SW der Aufzeichnung hatte mich kontaktiert, er wollte die Aufnahme mit einem meiner Programme machen, er selbst hatte dieses Problem in seiner SW untersucht und konnte keinen Fehler finden. Daher schreibe ich mal hier, vielleicht weiß jemand was ich einstellen könnte.

PS: Auch ein "Application.OnGetMainFormHandle" wo ich gezielt die Main-Forum zurück gebe bringt nichts.

Vielen Dank für eure Hilfe.

Grüße Markus

Michl
Beiträge: 2405
Registriert: Di 19. Jun 2012, 12:54

Re: Bildschirmaufnahme mit Lazarus Programmen

Beitrag von Michl »

Ja, das ist eigenartig. Kann das bestätigen.

Habe mal versucht das nachzubauen mit Lazarus und PrintWindow. Da werden alle GUIs gezeichnet, egal ob mit Lazarus oder anderweitig erstellt. (Prog anbei - Windows only).

Evtl. versuchen sie das falsche Handle auszulesen (Application Handle, statt MainWindow Handle).

Ansonsten würde ich solche Einstellungen per Manifest-File oder bei Window-Styles oder Extended-Window-Styles vermuten. Mir ist sowas aber nicht bekannt.
Dateianhänge
Snapshot.zip
(2.35 KiB) 21-mal heruntergeladen

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

MmVisual
Beiträge: 1158
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 2.0.10 FPC 3.2)
CPU-Target: 32/64Bit

Re: Bildschirmaufnahme mit Lazarus Programmen

Beitrag von MmVisual »

Hallo Michl, vielen Dank dass du dieses Problem an schaust.

Das "EnumWindows" gibt alle Fenster vom Desktop zurück. Ich habe mal alles geschlossen, bis auf Datei-Explorer und Firefox.

Danach zeigt das den ersten Eintrag "Start" mit einem schwarzen Fenster. Dieses "Start" muss die eigene EXE von deinem Demo-Programm sein.
Bild2.png
Bild2.png (4.81 KiB) 532 mal betrachtet
Vielleicht hilft dir das:
Die Bezeichnung "Start" muss ja wo her kommen, also bei Start vom FPC Programm muss ja irgend wann einmal das aller erste CreateWindow() mal ausgeführt werden, da wird vermutlich der Fenster-Name "Start" erzeugt.
Vielleicht dient es auch nur als Container für Windows, damit darin der ganze zugeordnete Speicher mit angehängt wird.
Ich kann natürlich auch völlig falsch liegen, ich kenne mich so tief in der FPC Eingeweihte nicht aus.

PS: Ja Windows. Sorry hatte ich im Eingangspost vergessen zu schreiben.

Viele Grüße Markus

MmVisual
Beiträge: 1158
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 2.0.10 FPC 3.2)
CPU-Target: 32/64Bit

Re: Bildschirmaufnahme mit Lazarus Programmen

Beitrag von MmVisual »

Noch ein Hinweis:

Ich habe das mit Lazarus erstellte Programm "EleLa" gestartet.
Nun sind 2 Einträge ersichtlich, beide mit unterschiedlichen Bezeichnern:
Bild3.png
Bild3.png (6.33 KiB) 528 mal betrachtet
Der erste "EleLa V4.0...." zeigt das Fenster.
Der zweite "EleLa - Mein ..." ist der Eintrag aus der Taskleiste, also so sieht es in der Windows Taskleiste aus.

Ich vermute mal dass hier versucht wird das Fenster aus der Taskleiste zu holen, jedoch ist dem Taskleiste-Eintrag nicht das MainForm-Handle zugewiesen.

Vielleicht ist dies ebenfalls ein Hinweis der weiter hilft.

VG Markus

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 726
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Bildschirmaufnahme mit Lazarus Programmen

Beitrag von kralle »

Moin,

ich habe das gerade mal unter "Linux Mint Cinnamon 64-Bit" mit "Lazarus 2.1.0 (FPC 3.3.1) probiert.
Einfach ein Form genommen, ein paar Objekte drauf und F9.

Die Seite zeigt mir dann zweimal "Form1" an.
Einmal aus dem Editor und einmal das kompilierte Programm.
Von letzterem wird alles außer der Titelleiste aufgezeichnet.

Wenn ich einfach so eine Aufzeichnung der IDE machen möchte, dann fehlen in der Aufnahme auch die Titelleisten.
Aber ein schwarzes Bild bekomme ich nicht.

Gruß HEiko
Linux Mint 20.1, FPC-Version: 3.3.1 , Lazarus 2.1.0
+ Delphi XE7SP1

PascalDragon
Beiträge: 301
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Bildschirmaufnahme mit Lazarus Programmen

Beitrag von PascalDragon »

Für Windows: mir hat geholfen in der Hauptdatei des Projekts Application.MainFormOnTaskBar := True; nach dem Application.Initialize; einzufügen.
FPC Compiler Entwickler

MmVisual
Beiträge: 1158
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 2.0.10 FPC 3.2)
CPU-Target: 32/64Bit

Re: Bildschirmaufnahme mit Lazarus Programmen

Beitrag von MmVisual »

Ein guter Tipp!

Code: Alles auswählen

Application.MainFormOnTaskBar := True;
Ja, das hilft. Damit geht es.
Hat jedoch den Nachteil dass dann man in der Taskbar keinen anderen Text haben kann als wie in der MainForm.Caption drin steht.

airwolf62
Beiträge: 1
Registriert: So 20. Dez 2020, 19:52

Re: Bildschirmaufnahme mit Lazarus Programmen

Beitrag von airwolf62 »

Hallo,

danke für die Analyse des Problems. Ich bin der Entwickler vom screen Recorder. Zur Info, der Screenrecorder verwendet hier die screen sharing Funktionen der namhaften Browser, welche im Zuge von WebRTC bereitgestellt werden. Es ist also nicht nur ein Problem des Recorders, es würde auch in allen WebRTC meetings nicht funktionieren. PrintWindow ist hier leider keine Option.

Antworten