Seite 1 von 1
Screenshot aus C-Programm
Verfasst: So Mai 17, 2009 6:17 pm
von +Fuss+
Kennt jemand eine Funktion mit der man einen Screenshot (wie normal über die Druck-Taste) in einer Datei abspeichern kann? Hab schon Google gequält, aber nichts brauchbares an Code gefunden.
Wenn möglich sollte das ganze Plattformunabhängig sein, wenn es nur auf Linux läuft ist es erstmal auch nicht schlimm.
Schonmal danke im vorraus!
MfG Fuss
Re: Screenshot aus C-Programm
Verfasst: So Mai 17, 2009 6:25 pm
von Dirty Oerti
Hm, am besten lässt du zur Laufzeit erkennen, auf welcher Plattform du dich befindest (oder regelst das durch Defines).
Dann verfährst du, je nach System:
Unter Linux kannst du einen Screenshot machen, in dem du z.B. ein externes Programm (feh) aufrufst.
Das musst du halt als "Abhängigkeit" zu deinem Programm hinzufügen.
Wobei, es müsste auch über den XServer gehen.
Unter Windows..keine Ahnung, du könntest natürlich einen Tastendruck simulieren, aber das ist iwie ein rechter Umweg.
Mal schaun, ob man dazu was findet...
Re: Screenshot aus C-Programm
Verfasst: So Mai 17, 2009 6:30 pm
von nufan
Mit SDL_SaveBMP kannst du den Inhalt eines Surfaces als BMP speichern.
Also z.B.
http://www.libsdl.org/cgi/docwiki.cgi/SDL_SaveBMP
EDIT:
Vergessen zu fragen: es ist doch kein reines Konsolenprogramm, oder?
Re: Screenshot aus C-Programm
Verfasst: So Mai 17, 2009 6:37 pm
von Jside
Simuliere den Tastendruck für DRUCK/S-Abf, dann ist es im clipboard, wie man es dann von diesem aus lädt oder abspeichert liegt am OS, ist aber ohne weiteres möglich,...
Re: Screenshot aus C-Programm
Verfasst: So Mai 17, 2009 6:47 pm
von +Fuss+
Diese Möglichkeit macht doch nur Bilder von dem eigenen SDL-Fenster oder? Ich meinte eigentlich einen ganzen Screenshot, oder sehe ich da was falsch?
Wenn ich den Tastendruck unter Linux simulieren, dann öffnet sich doch immer diese Fenster für Speicherort etc. ich wollte eigentlich ein eigenständiges C-Programm, was selber aus sich heraus einen Screenshot aufnimmt. Oder ist das nicht möglich?
MfG Fuss
Re: Screenshot aus C-Programm
Verfasst: So Mai 17, 2009 7:05 pm
von Dirty Oerti
Das Tastendruck simulieren wäre die letzte Lösung.
Unter Linux ist es wohl kein Problem:
Im Programm imagemagick (glaube ich)
Re: Screenshot aus C-Programm
Verfasst: So Mai 17, 2009 7:09 pm
von nufan
+Fuss+ hat geschrieben:Diese Möglichkeit macht doch nur Bilder von dem eigenen SDL-Fenster oder?
Es speichert SDL-Surfaces als BMP. Das kann der ganze Fensterinhalt aber auch ein anderes Surface sein. Einen Screenshot vom kompletten Bildschirm wirst du damit aber nicht hinbekommen (es sei denn, du arbeitest mit SDL im Vollbildmodus).
+Fuss+ hat geschrieben:Wenn ich den Tastendruck unter Linux simulieren, dann öffnet sich doch immer diese Fenster für Speicherort etc. ich wollte eigentlich ein eigenständiges C-Programm, was selber aus sich heraus einen Screenshot aufnimmt. Oder ist das nicht möglich?
Ich hätte auch was in der Richtung vorgeschlagen:
Code: Alles auswählen
#include <stdio.h>
int main ()
{
system ("gnome-screenshot");
return 0;
}
Aber wie gesagt öffnet sich dann das Fenster. Das ist unter Windows vielleicht leichter, weil da nix passiert wenn du auf die Taste drückst.
Dirty Oerti hat geschrieben:Das Tastendruck simulieren wäre die letzte Lösung.
Unter Linux ist es wohl kein Problem:
Im Programm imagemagick (glaube ich)
Wenn sich da kein Fenster öffnet sollte das doch mit system gehen. (auch wenn system böse ist...)
Re: Screenshot aus C-Programm
Verfasst: So Mai 17, 2009 7:27 pm
von Jside
dani93 hat geschrieben:
Dirty Oerti hat geschrieben:Das Tastendruck simulieren wäre die letzte Lösung.
Unter Linux ist es wohl kein Problem:
Im Programm imagemagick (glaube ich)
Wenn sich da kein Fenster öffnet sollte das doch mit system gehen. (auch wenn system böse ist...)
Joop, reiner Consolen Befehl. Geht mit system(); Ewtl bei mehreren Screenshots vorher den Command via sprintf() und einem steigendem Integer im Namen vorformatieren...