Screenshot unter Linux - Ubuntu 24 10

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
EUP
Beiträge: 14
Registriert: Fr 18. Jul 2014, 23:07

Screenshot unter Linux - Ubuntu 24 10

Beitrag von EUP »

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
Zuletzt geändert von EUP am Di 12. Nov 2024, 07:52, insgesamt 1-mal geändert.

wennerer
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

Beitrag von wennerer »

Hallo EUP,
schau mal hier: viewtopic.php?p=131315#p131315

oder hier: https://wiki.lazarus.freepascal.org/Dev ... _erstellen

Viele Grüße
Bernd

EUP
Beiträge: 14
Registriert: Fr 18. Jul 2014, 23:07

Re: Screenshot unter Linux - Ubuntu 24 10

Beitrag von EUP »

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.

Benutzeravatar
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

Beitrag von Zvoni »

Vielleicht hier
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.

Benutzeravatar
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

Beitrag von h-elsner »

Ich hatte das mal so gemacht:

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;
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.

EUP
Beiträge: 14
Registriert: Fr 18. Jul 2014, 23:07

Re: Screenshot unter Linux - Ubuntu 24 10

Beitrag von EUP »

Hallo,

das fluppt, vielen Dank.

Liefert zwar "nur" das Anwendungsfenster, was mir hier aber sogar entgegen kommt.

Und ja, läuft unter Wayland.

Antworten