Bild der Arbeitsflächen kriegen
-
- Beiträge: 359
- Registriert: Mi 27. Mai 2009, 20:54
- OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
- CPU-Target: x86
- Wohnort: Cottbus
Bild der Arbeitsflächen kriegen
Hallo!
Ich würde gerne mal wissen wie man ein Bild von jeder Arbeitsfläche die man hat bekommt bei SUSE11.2 (also KDE4).
Also auch von den Programmen die auf dieser gerade an sind.
Gibt es da irgendeine Funktion oder muss ich mir das selber zusammen tippen und wenn ja, wie?
Vermutlich brauche ich ja irgendwie das Handle der Arbeitsfläche, aber wie bekomme ich das und wie mach ich daraus dann ein Bild?
Gruß Teekeks
Ich würde gerne mal wissen wie man ein Bild von jeder Arbeitsfläche die man hat bekommt bei SUSE11.2 (also KDE4).
Also auch von den Programmen die auf dieser gerade an sind.
Gibt es da irgendeine Funktion oder muss ich mir das selber zusammen tippen und wenn ja, wie?
Vermutlich brauche ich ja irgendwie das Handle der Arbeitsfläche, aber wie bekomme ich das und wie mach ich daraus dann ein Bild?
Gruß Teekeks
Re: Bild der Arbeitsflächen kriegen
Sie müssen nur den Nippel durch die Lasche ziehn
und mit der kleinen Kurbel ganz nach oben drehn.
Da erscheint sofort ein Pfeil
und da drücken sie dann drauf
ich wollt' es gerade tun
da schlug ich auf.

-
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Re: Bild der Arbeitsflächen kriegen
Theo, was ist denn mit dir los?
Also, wie genau du das mit Lazarus machen kannst, weiß ich nicht... Da müsste ich erstmal die Doku der entsprechenden X11-Funktion lesen...
Ich könnte dir aber eine Alternative anbieten: Screenshot mittels ImageMagick. Natürlich hat dann deine Anwendung imagemagick als Abhängigkeit...
Den Code habe ich mir hier schnell ausgedacht, er ist nicht getestet.


Also, wie genau du das mit Lazarus machen kannst, weiß ich nicht... Da müsste ich erstmal die Doku der entsprechenden X11-Funktion lesen...
Ich könnte dir aber eine Alternative anbieten: Screenshot mittels ImageMagick. Natürlich hat dann deine Anwendung imagemagick als Abhängigkeit...
Code: Alles auswählen
function TakeScreenshot(fname: String): Boolean;
var p: TProcess;s: TStringList;
procedure Free_All()
begin
if Assigned(p) then p.Free;
if Assigned(s) then s.Free;
end;
begin
Result:=true;
if FileExists(fname) then
begin
Result:=false;
Free_All();
exit;
end;
p:=TProcess.Create(nil);
p.Options:=[poStdErrToOutput,poUsePipes,poWaitOnExit];
p.CommandLine:='which import';
p.Execute;
s:=TStringList.Create;
s.LoadFromStream(p.Output);
if (s.Count < 0)or(not FileExists(s[1])) then
begin
Result:=false;
Free_All();
exit;
end;
s.Free;
p.CommandLine:='import -window root '+fname;
p.Execute;
if p.ExitStatus>0 then
Result:=false;
p.Free;
end;


Re: Bild der Arbeitsflächen kriegen
Naja, das ist ja nur der kleiner Teil der Frage. Den Screenshot kann man auch nur mit Bordmitteln nehmen:
http://wiki.lazarus.freepascal.org/Deve ... the_screen" onclick="window.open(this.href);return false;
Die eigentliche Frage ist, wie man durch die virtuellen Desktops schaltet. Da ich das nicht weiss, habe ich mal den Nippel zitiert. War nicht böse gemeint.
http://wiki.lazarus.freepascal.org/Deve ... the_screen" onclick="window.open(this.href);return false;
Die eigentliche Frage ist, wie man durch die virtuellen Desktops schaltet. Da ich das nicht weiss, habe ich mal den Nippel zitiert. War nicht böse gemeint.
-
- Beiträge: 359
- Registriert: Mi 27. Mai 2009, 20:54
- OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
- CPU-Target: x86
- Wohnort: Cottbus
Re: Bild der Arbeitsflächen kriegen
Hmmm, mit Import bekomme ich aber doch nur ein Bild vom Aktuell angezeigten screen, ich will aber von jedem (auch von den momentan nicht angezeigten) eins.
-
- Beiträge: 370
- Registriert: Di 6. Feb 2007, 09:29
- OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
- CPU-Target: 32bit i386, ARM
- Wohnort: Oberösterreich
Re: Bild der Arbeitsflächen kriegen
Kann es sein, dass das System gar nicht "weiß", wie der aktuelle Screen aussieht und den (unabhängig von irgendwelchen Pagern im Panel) Inhalt erst dann wieder "neu zeichnet", wenn's denn notwendig ist?
-
- Beiträge: 359
- Registriert: Mi 27. Mai 2009, 20:54
- OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
- CPU-Target: x86
- Wohnort: Cottbus
Re: Bild der Arbeitsflächen kriegen
neee, es gibt doch auch diese Übersichten über die Oberflächen wo auch die Fenster mit angezeigt werden.
Das sollte also möglich sein...
Das sollte also möglich sein...
-
- Beiträge: 370
- Registriert: Di 6. Feb 2007, 09:29
- OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
- CPU-Target: 32bit i386, ARM
- Wohnort: Oberösterreich
Re: Bild der Arbeitsflächen kriegen
Also sicher bin ich mir da nicht. Ein "Pager", zeichnet ja nur "Vierecke" in einem kleinen Feld, die Koordinaten/Größe holt er sich vom "aktuellen" Screen, soviel ist klar. Aber der Pager muss nicht wissen/weiß nicht, ob und wie Icons am Desktop angeordnet sind, ob der Bildschirm 4:3 oder 16:9 ist, welchen Hintergrund ich habe und wie viele Panels (z.B. Gnome oben und unten) ich habe. Das zeigt mir der Pager nicht an.
-
- Beiträge: 359
- Registriert: Mi 27. Mai 2009, 20:54
- OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
- CPU-Target: x86
- Wohnort: Cottbus
Re: Bild der Arbeitsflächen kriegen
Ich rede ja anscheinend von einem anderen Ding, ich rede von dem teil was bei SUSE11.2 auf berührung der Bildschirmecke erscheint (wenn man das aktiviert).
Da wird einem z.B. in Würfelform jeweils ein Screenie der Oberflächen angezeigt...
Da wird einem z.B. in Würfelform jeweils ein Screenie der Oberflächen angezeigt...
-
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Re: Bild der Arbeitsflächen kriegen
Nein, Linux weiß definitiv nicht, wie alle virtuellen Desktops aussehen. Compiz oder KWin holen sich diese Information extra, sobald der entsprechende Effekt aktiviert wurde.
Du musst dir mal anschauen, wie KWin / Compiz das regeln, wenn Exposé oder der Würfel aufgerufen wird.
Du musst dir mal anschauen, wie KWin / Compiz das regeln, wenn Exposé oder der Würfel aufgerufen wird.
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Bild der Arbeitsflächen kriegen
Unter Delphi gab es die Möglichkeit, einen eigenen Virtuellen Desktop anzulegen bzw. zwischen den hin und her zu schalten.
Wenn du mit GetDC(0) den Bildschirm holst, holst du den Aktiven Bildschirm Inhalt. Vielleicht klappt es ja, wenn du statt 0 1 verwendest für den zweiten Desktop.
Du brauchst "nur" den Handle. Dann könntest du das über GetDC machen. Dazu gab es mal ein Beispiel im Lazarus-Wiki.
Wenn du mit GetDC(0) den Bildschirm holst, holst du den Aktiven Bildschirm Inhalt. Vielleicht klappt es ja, wenn du statt 0 1 verwendest für den zweiten Desktop.
Du brauchst "nur" den Handle. Dann könntest du das über GetDC machen. Dazu gab es mal ein Beispiel im Lazarus-Wiki.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: Bild der Arbeitsflächen kriegen
Du meinst aber sicherlich physische Desktops (aka Multimonitoring) ... Virtuelle Desktops sind was anderes (eben nicht physisch vorhanden, sondern "emuliert" durch Verstecken und Wiederanzeigen von Fenstern, oder unterschiedliche Koordinaten, oder was auch immer aktuelle Windowmanager so treiben).pluto hat geschrieben:Unter Delphi gab es die Möglichkeit, einen eigenen Virtuellen Desktop anzulegen bzw. zwischen den hin und her zu schalten.
Wenn du mit GetDC(0) den Bildschirm holst, holst du den Aktiven Bildschirm Inhalt. Vielleicht klappt es ja, wenn du statt 0 1 verwendest für den zweiten Desktop.
Du brauchst "nur" den Handle. Dann könntest du das über GetDC machen. Dazu gab es mal ein Beispiel im Lazarus-Wiki.
Zudem hat der Device Context (den du mit GetDC bekommst) überhaupt nix damit zu tun. Jedes Fenster hat einen DC, und das Fenster mit Handle 0 ist halt der Desktop selbst - also "alles". Somit macht man einen Screenshot, wenn man den Device Context vom Root Window beschafft und sich kopiert was der grad zeichnet.
(Abgesehen davon, dass die Frage sich auf KDE4 unter Linux bezog, und nicht auf Windows

-
- Beiträge: 359
- Registriert: Mi 27. Mai 2009, 20:54
- OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
- CPU-Target: x86
- Wohnort: Cottbus
Re: Bild der Arbeitsflächen kriegen
Weiß das jemand wie die das machen?Targion hat geschrieben: Compiz oder KWin holen sich diese Information extra, sobald der entsprechende Effekt aktiviert wurde.
Du musst dir mal anschauen, wie KWin / Compiz das regeln, wenn Exposé oder der Würfel aufgerufen wird.
Genau das ist es nämlich was ich (von der Art her) machen will.
-
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Re: Bild der Arbeitsflächen kriegen
Ich habe mich da nicht richtig reingearbeitet, aber die workspace.c des WM WindowMaker sieht ganz vielversprechend aus. Der KWin-Code liegt im KDE-SVN, aber da blickst man ohne Anleitung weniger durch.
Vielleicht findest du ja auch noch eine Dokumentation der X11-Funktionen oder von Compiz.
Je nachdem, was die Arbeitsflächen verwaltet könnte es aber sein, dass dein Programm hinteher von KDE-Komponenten oder von GNOME abhängt.
Vielleicht findest du ja auch noch eine Dokumentation der X11-Funktionen oder von Compiz.
Je nachdem, was die Arbeitsflächen verwaltet könnte es aber sein, dass dein Programm hinteher von KDE-Komponenten oder von GNOME abhängt.
Re: Bild der Arbeitsflächen kriegen
@Targion: Verstehst du jetzt, warum ich geschrieben habe "Sie müssen nur den Nippel durch die Lasche ziehn..."Targion hat geschrieben:Ich habe mich da nicht richtig reingearbeitet, aber die workspace.c des WM WindowMaker sieht ganz vielversprechend aus. Der KWin-Code liegt im KDE-SVN, aber da blickst man ohne Anleitung weniger durch.
Vielleicht findest du ja auch noch eine Dokumentation der X11-Funktionen oder von Compiz.
Je nachdem, was die Arbeitsflächen verwaltet könnte es aber sein, dass dein Programm hinteher von KDE-Komponenten oder von GNOME abhängt.
