Hallo,
momentan stelle ich ein Project von Gambas nach Lazarus um.
Hier soll es die Möglichkeit geben, den aktuellen Bildschirm auszudrucken.
Leider scheitere ich schon beim ScreenShot, im Netz fand ich folgenden Code, hier leicht abgewandelt:
function TakeScreenShot(): TPicture;
var
ScrDC: HDC;
btmap: TBitmap;
begin
btmap := TBitmap.Create;
ScrDC := GetDC(0);
btmap.LoadFromDevice(ScrDC); <----- Fehlermeldung hier
ReleaseDC(0, ScrDC);
result := TPicture(btmap);
btmap.Free;
end;
Dummerweise erhalte ich an markierter Stelle folgende Fehlermeldung:
Project XYZ hat Exception-Klasse »FPImageException« ausgelöst mit der Meldung:
Failed to get raw image from device
in Datei 'intfgraphics.pas' in Zeile 3618
Mögliche Problemstellung (nur ein Verdacht)
=============================
In der Gambas Version funktioniert es einwandfrei (da gibt es allerdings einen extra Befehl dafür), jedoch muss ich im Betriebssystem (Ubuntu 24.10) die Aufnahme vor der Durchführung extra genehmigen.
Könnte es evtl. sein, dass Lazarus auf solcherlei Ablaufeingriffe von außen allergisch reagiert?
Was mache ich falsch / bzw, wenn meine Vermutung zutrifft, wie reagiere ich auf Vorgenanntes?
Technische Daten
============
Lazarus 3.6 auf Ubuntu 24.10
Vielen Dank im Voraus an alle Wissenden.
eup
Screenshot unter Linux - Ubuntu 24 10
Screenshot unter Linux - Ubuntu 24 10
Zuletzt geändert von EUP am Di 12. Nov 2024, 07:52, insgesamt 1-mal geändert.
-
- Beiträge: 607
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: Screenshow unter Linux - Ubuntu 24 10
Hallo EUP,
schau mal hier: viewtopic.php?p=131315#p131315
oder hier: https://wiki.lazarus.freepascal.org/Dev ... _erstellen
Viele Grüße
Bernd
schau mal hier: viewtopic.php?p=131315#p131315
oder hier: https://wiki.lazarus.freepascal.org/Dev ... _erstellen
Viele Grüße
Bernd
Re: Screenshot unter Linux - Ubuntu 24 10
Hallo Bernd,
vielen Dank für die Mühen, aber der eine Link ist wahrscheinlich genau der, den ich bei mir umsetze. Den anderen hatte ich auch gesehen, der behandelt aber einen einen anderen Fall.
Nach nochmaligem Überdenken, glaube ich nicht mehr, dass die Sicherheitsfunktion den Screenshot unter Lazarus verhindert, denn dazu müsste ja die Meldung, welche das Betriebssystem anzeigt, erst einmal aufploppen. Soweit kommt es aber erst gar nicht.
vielen Dank für die Mühen, aber der eine Link ist wahrscheinlich genau der, den ich bei mir umsetze. Den anderen hatte ich auch gesehen, der behandelt aber einen einen anderen Fall.
Nach nochmaligem Überdenken, glaube ich nicht mehr, dass die Sicherheitsfunktion den Screenshot unter Lazarus verhindert, denn dazu müsste ja die Meldung, welche das Betriebssystem anzeigt, erst einmal aufploppen. Soweit kommt es aber erst gar nicht.
- Zvoni
- Beiträge: 368
- Registriert: Fr 5. Jul 2024, 08:26
- OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
- CPU-Target: 32Bit
- Wohnort: BW
Re: Screenshot unter Linux - Ubuntu 24 10
Vielleicht hier
https://forum.lazarus.freepascal.org/in ... ic=19478.0
Was ich sehe: Du setzt keine Grösse des Ziel-Bitmaps
https://forum.lazarus.freepascal.org/in ... ic=19478.0
Was ich sehe: Du setzt keine Grösse des Ziel-Bitmaps
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
- h-elsner
- Lazarusforum e. V.
- Beiträge: 281
- Registriert: Di 24. Jul 2012, 15:42
- OS, Lazarus, FPC: LINUX Mint21.1, Win10, Lazarus 2.2.4, FPC3.2.2
- CPU-Target: X86-64; arm 32bit
- Wohnort: Illertissen
- Kontaktdaten:
Re: Screenshot unter Linux - Ubuntu 24 10
Ich hatte das mal so gemacht:
Das funktioniert mit LINUX Mint Mate 20. Ob das allerdings mit Wayland funktioniert, weiß ich nicht. Ich habe auch nicht geprüft, ob "GetFormImage; " mit Windows jetzt geht.
Code: Alles auswählen
procedure TForm1.ScreenToBild(filename: string); {Screenshot}
var
bild: TPortableNetworkGraphic;
bmp: TBitMap;
ScreenDC: HDC;
begin
bild:=TPortableNetworkGraphic.Create; {create PNG-picture}
try
{$IFDEF LINUX}
bmp:=GetFormImage; {No more working with Windows}
bild.Assign(bmp);
{$ELSE}
ScreenDC := GetDC(Handle);
bild.LoadFromDevice(ScreenDC); {Get screenshot xyz.Handle}
ReleaseDC(0, ScreenDC);
{$ENDIF}
bild.SaveToFile(filename);
finally
bild.Free;
{$IFDEF LINUX}
bmp.Free;
{$ENDIF}
end;
end;
Re: Screenshot unter Linux - Ubuntu 24 10
Hallo,
das fluppt, vielen Dank.
Liefert zwar "nur" das Anwendungsfenster, was mir hier aber sogar entgegen kommt.
Und ja, läuft unter Wayland.
das fluppt, vielen Dank.
Liefert zwar "nur" das Anwendungsfenster, was mir hier aber sogar entgegen kommt.
Und ja, läuft unter Wayland.