Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Screenshot unter Linux (https://www.delphipraxis.net/192640-screenshot-unter-linux.html)

Harry Stahl 7. Mai 2017 20:41

Screenshot unter Linux
 
Hallo,

hat Jemand von Euch zufälligerweise schon herausgefunden, wie man mit Delphi 10.2 unter Linux einen Screenshot erstellen kann?

Und zwar nicht so, dass man ein anderes Linux-Systemtool aufruft, sondern das direkt mit Delphi selber erledigen kann?

Über einen Hinweis wäre ich dankbar.:)

creed steiger 7. Mai 2017 21:00

AW: Screenshot unter Linux
 
X11?
ohne "Linux-Systemtool" wirst du dir schwer tun, wobei ich nicht weis was du darunter verstehst

Harry Stahl 7. Mai 2017 22:22

AW: Screenshot unter Linux
 
Systemtool: Darunter verstehe ich z.B. das unter Ubuntu schon installierte gnome. Man kann es mit einem Parameter aufrufen und dann einen Screenshot als Datei speichern lassen.

Nur: Es werden bei Multimonitor-Systemen dann alle 3 Monitore erfasst und außerdem flackert es dann einmal kurz.

Von der Performance natürlich auch viel zu langsam. Ich möchte mein Remote-Desktop-Programm auch für Linux erweitern, da wäre es schon gut, alles auf Memory-Ebene erledigen zu können.

Bei der Suche nach entsprechenden Funktionen in den von Delphi mitgelieferten Linux-Dateien (Enterprise-Version) bin ich allerdings leider nicht fündig geworden.

mensch72 7. Mai 2017 22:32

AW: Screenshot unter Linux
 
https://github.com/TigerVNC/tigervnc/releases

guck mal in den Source von z.B. TigerVNC, die haben das was du willst für Linux gelöst :)

(was in C geht, geht auch in Delphi und wenn man es als eine externe C lib realisiert und diese aufruft)

MichaelT 8. Mai 2017 08:30

AW: Screenshot unter Linux
 
Kannst du das Drücken der PrintScreen Taste emulieren?




himitsu 8. Mai 2017 11:43

AW: Screenshot unter Linux
 
Zitat:

Zitat von MichaelT (Beitrag 1370537)
Kannst du das Drücken der PrintScreen Taste emulieren?

Im Android kann man auch irgendwie über /dev/input/irgendwas oder dev/graphics/irgendwa auf den "Monitor" zugreifen.
Da Android intern quasi auch nur ein Linux ist, wird es das doch auch im "normalen" Linux geben?



Das wäre für dich ja auch ein Systemtool?
http://www3.hs-esslingen.de/rz/FAQ.php3?MYID=155

MichaelT 8. Mai 2017 15:54

AW: Screenshot unter Linux
 
Es gibt genug Lösungen für X-Windows in C am Netz. Diese Beiträge hat der Harry Stahl bestimmt schon zuvor gefunden. Im Freepascal geht/ging es bestimmt. Ich will allein nicht dauern dorthin verlinken.

Lazarus Wiki

Unter Windows brauche ich zumindest noch das gute alte SnagIt da ich SAP Listboxen quasi scrolle und ein Qualitätsprüfung mache (wofür würde jetzt zuweit vom Thema wegführen).

Imagemagick gibt es auch mit Pascal interface ... wenn man nachher etwas tun will.


Zitat:

Zitat von himitsu (Beitrag 1370561)
Zitat:

Zitat von MichaelT (Beitrag 1370537)
Kannst du das Drücken der PrintScreen Taste emulieren?

Im Android kann man auch irgendwie über /dev/input/irgendwas oder dev/graphics/irgendwa auf den "Monitor" zugreifen.
Da Android intern quasi auch nur ein Linux ist, wird es das doch auch im "normalen" Linux geben?



Das wäre für dich ja auch ein Systemtool?
http://www3.hs-esslingen.de/rz/FAQ.php3?MYID=155


Namenloser 8. Mai 2017 16:22

AW: Screenshot unter Linux
 
Zitat:

Zitat von MichaelT (Beitrag 1370537)
Kannst du das Drücken der PrintScreen Taste emulieren?



Da würde bei meinem Linux genau überhaupt nichts passieren.

Harry Stahl 8. Mai 2017 16:30

AW: Screenshot unter Linux
 
PrintScreen hat den Nachteil, dass es auch flackert und sich standardmäßig das Bildschirmtool präsentiert (Ubuntu).

In TigerVNC konnte ich (zumindest nach kursorischer Durchsicht) nichts relevantes finden...

hanvas 8. Mai 2017 19:43

AW: Screenshot unter Linux
 
Unter Linux mit X wird normalerweise das Komando/Programm XWD benutzt um Screenshots zu machen. Das dürfte für die unterschiedlichen Desktop-Manager die portabelste Lösung sein.

XWD selbst greift auf die XLib bzw. libX11 zurück (XGetImage) Da der Linux Support von Delphi sich ausdrücklich nur auf die Kommandozeile bezieht, bezweifle ich das es Bindings dafür gibt. Für FPC / Lazarus gibt es die sehr wohl, möglicherweise kannst Du ja damit etwas anfangen. *

Nachtrag :

Da Du ausdrücklich GNOME erwähnst könntest Du auch mal nach Bindings für Delphi/FreePascal und GTK+ suchen (da Gnome auf GTK+ basiert) oder die entsprechenden Funktionen / Header einfach selbst übersetzen. **




cu Ha-Jö


* http://wiki.lazarus.freepascal.org/X11
** http://stackoverflow.com/questions/3...hot-with-c-gtk

Harry Stahl 8. Mai 2017 21:47

AW: Screenshot unter Linux
 
Wie soll das mit xwd reigentlich richtig funktionieren?

xwd -out test.jpg

erzeugt eine nicht lesbare Datei.

Ja, mit Lazarus ist das an dieser Stelle einfach, mit "Bitmap.LoadFromdevice (GETDC(0))" kann man ganz einfach einen Screenshot machen, das setze ich schon in meinem Bildbearbeitungsprogramm für Linux ein.

Hab auch schon mal bei Lazarus nachgesehen, die machen das aber mit den einzelnen Widget-Sets, dass kann ich so nicht auf Delphi übertragen.

Wenn ich es für Delphi nicht rausfinde, dann mache ich mir halt ein kleines Lazarus-Hilfsprogramm, das mir über eine TCP-IP-Verbindung den Screen an mein Delphi-Programm streamt....

hanvas 9. Mai 2017 08:26

AW: Screenshot unter Linux
 
Zitat:

Zitat von Harry Stahl (Beitrag 1370625)
Wie soll das mit xwd reigentlich richtig funktionieren?

Hab auch schon mal bei Lazarus nachgesehen, die machen das aber mit den einzelnen Widget-Sets, dass kann ich so nicht auf Delphi übertragen.

Wenn ich es für Delphi nicht rausfinde, dann mache ich mir halt ein kleines Lazarus-Hilfsprogramm, das mir über eine TCP-IP-Verbindung den Screen an mein Delphi-Programm streamt....

Du kannst eine Library bzw. shared library mit Lazarus erzeugen und wie eine DLL in Dein Delphi Programm einbinden.

cu Ha-Jö

MichaelT 9. Mai 2017 08:30

AW: Screenshot unter Linux
 
Allein der Vollständigkeit halber ...

Screenshots unter Linux - Archlinux (deutsch)

Ubuntu Wiki


Zitat:

Zitat von Namenloser (Beitrag 1370595)
Zitat:

Zitat von MichaelT (Beitrag 1370537)
Kannst du das Drücken der PrintScreen Taste emulieren?



Da würde bei meinem Linux genau überhaupt nichts passieren.


creed steiger 9. Mai 2017 21:28

AW: Screenshot unter Linux
 
Zitat:

Zitat von Harry Stahl (Beitrag 1370625)
Wie soll das mit xwd reigentlich richtig funktionieren?

xwd -out test.jpg

erzeugt eine nicht lesbare Datei.

xwd speichert im xwd Format, also ist die Datei schon lesbar. (mit xwud z.B.)
Nur kein jpg ist es halt nicht, dazu müsste es erst Konvertiert werden.

https://wiki.ubuntuusers.de/X_Window_Dump/

mensch72 9. Mai 2017 21:52

AW: Screenshot unter Linux
 
..."dann mache ich mir halt ein kleines Lazarus-Hilfsprogramm, das mir über eine TCP-IP-Verbindung den Screen an mein Delphi-Programm streamt"...
..."Du kannst eine Library bzw. shared library mit Lazarus erzeugen und wie eine DLL in Dein Delphi Programm einbinden"...

im aktuellem Delphi-Linux-FMX Stand würde ich auch eine der Varianten nehmen. Ansonsten schreibe deinen "Wunsch" den LinuxFMX Leuten, die können das "nebenbei" ähnlich Lazerus selbst dann für alle einbinden:)

Harry Stahl 9. Mai 2017 22:09

AW: Screenshot unter Linux
 
@Mensch72

Gute Idee, habe da mal eine Anfrage gestartet.

Ansonsten wäre der Weg mit der Lazarus-DLL wohl die beste Variante (muss ich aber selber noch raus finden, wie das konkret geht, diese Kombi hatte ich noch nicht, sollte aber machbar sein).

Danke auch für die Hinweise der anderen Thread-Teilnehmer...:thumb:

himitsu 9. Mai 2017 22:40

AW: Screenshot unter Linux
 
In einem der Links sah ein Code ja nicht sooo schlimm aus (python), der für alle möglichen Linuxe etwas versuch.

bezüglich Lazarus-DLL:
Auf Java kann man doch auch vom Delphi aus zugreifen, wenn du dafür einen Code findest, dann könnte man den Weg versuchen.

Es gibt doch da von einem Drittanbieter den Versuch 'ne GUI für Linux anzubieten.
Kannst die fragen, ob sie auch schon eine Lösung für die andere Richtung kennen.

Harry Stahl 9. Mai 2017 23:11

AW: Screenshot unter Linux
 
Zitat:

Zitat von himitsu (Beitrag 1370827)
Es gibt doch da von einem Drittanbieter den Versuch 'ne GUI für Linux anzubieten.
Kannst die fragen, ob sie auch schon eine Lösung für die andere Richtung kennen.

Genau darauf lief ja der Vorschlag von Mensch72 hinaus, dem ich ja dann auch gefolgt bin...

Aber muss ja ein wenig schmunzeln bei Deiner Formulierung... Aus FMXLinux ist schon deutlich mehr draus geworden, als ein Versuch, die sind bald fertig, nehme relativ aktiv an der Betaphase teil.

Hier kann man den aktuellen Stand laden: http://fmxlinux.com

Das sieht schon alles so super aus...:-D:-D:-D:-D:-D:-D

Harry Stahl 10. Mai 2017 20:37

AW: Screenshot unter Linux
 
Das war eine gute Idee von Dir, Mensch72, die Entwickler haben die Funktionalität kurzerhand hinzugefügt:

Bitmap := TakeScreenShot;

Funktioniert super...:thumb::thumb:

mensch72 10. Mai 2017 21:13

AW: Screenshot unter Linux
 
isch weiß, bin mit denen zwar nicht so direkt und ständig in Kontakt, hatte den Wunsch aber auch schonmal geäußert:)

Was braucht es denn nun noch für eine vernünftige Linux 2D-GUI Anwendung?...
1. Druckerunterstützung & Kapselung stehen bei mir noch ganz oben auf der Wunschliste mit ein paar Beispielen!
2. etwas mehr Support/Kapselung für "schnelles 2D - DirectDraw"... sagen wir für externes Bitmapstreaming... bei dir ala Anzeige deiner externen ScreenStreams, bei uns mehr sowas wie live berechnete Bitmaps oder Overlays

Wenn die gut auf dich "hören", kannst ja mal so frei sein und dies auch mal nebenbei denen auch als "deinen Wunsch" mitteilen:)

Harry Stahl 10. Mai 2017 21:43

AW: Screenshot unter Linux
 
Ich glaube, das hat nichts mit gut hören oder so zu tun, sondern mit dem erforderlichen Aufwand, der mit der gewünschten Implementation verbunden ist...

Es geht ja nur eins nach dem anderen und ich gehe davon aus, dass Deine Wünsche gute Chancen haben, auch noch in Erfüllung zu gehen.

Was ich auch total cool finde, ist, dass TMS mit seinen FNC- und FMX-Komponentensammlungen das FMX-Linux unterstützen will (im Moment noch "experimental"), aber wenn das wirklich kommt, dann hat man schon eine Super-Komponenten-Basis um moderne Desktop-Programme mit vielen hübschen Fähigkeiten und Schnittstellen aller Art unter Linux zu entwickeln...

Luckie 11. Mai 2017 00:02

AW: Screenshot unter Linux
 
Kennt Linux keinen DC für die Screen, wie unter Windows? Irgendwie müssen es ja auch die Linux-Tools machen. Ist das Voodoo unter Linux den so ein Geheimnis?

JayZ 15. Jun 2017 02:01

AW: Screenshot unter Linux
 
Zitat:

Zitat von Harry Stahl (Beitrag 1370957)
Das war eine gute Idee von Dir, Mensch72, die Entwickler haben die Funktionalität kurzerhand hinzugefügt:

Bitmap := TakeScreenShot;

Funktioniert super...:thumb::thumb:

hi harry
habe die fmxlinux trial ausprobiert und würde auch gerne versuhcen unter linux einen screenshot zu machen :)

bei mir kann jedoch TakeScreenShot nicht gefunden werden, ich habe zur sicherheit auch die neuste version installiert ohne erfolg. kannst du mir bitte sagen wie icch zu der funktion komme?

grüsee

Harry Stahl 15. Jun 2017 15:11

AW: Screenshot unter Linux
 
Man muss zusätzlich die Unit "FMX.Canvas.Linux" einbinden.

Im Dokumentenverzeichnis installiert FMXLinux einige Beispiele, da ist auch eins Namens "Screenshot" dabei...


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz