131361

Software für Bildschirmaufnahmen mit Ringspeicher

Hallo zusammen,

such eine Software, mit der ich meinen Bildschirmaufnehmen kann.
Das ist soweit nicht das Problem.

Allerdings soll die Aufnahme permanent durchlaufen, allerdings immer nur ein Zeitfenster von 2h.
Sind diese 2h Aufnahme erreicht, soll die Aufnahme von vorne wieder überschrieben werden (Ringspeicher).

Gibt es ein solches Tool?
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 358048

Url: https://administrator.de/forum/software-fuer-bildschirmaufnahmen-mit-ringspeicher-358048.html

Ausgedruckt am: 13.05.2025 um 23:05 Uhr

sabines
sabines 13.12.2017 um 09:13:30 Uhr
Goto Top
Moin,

direkt kann ich nicht helfen, aber eventuell kannst Du mit Präsentationsaufzeichnern (ActivePresenter o.ä.) und der Aufgabenplanung was basteln.

Gruss
134464
Lösung 134464 13.12.2017 aktualisiert um 12:23:03 Uhr
Goto Top
Schreib es dir doch einfach selbst face-smile
https://stackoverflow.com/questions/362986/capture-the-screen-into-a-bit ...
Schleife die alle x Sekunden einen Screenshot schießt und gleichzeitig Bilder älter als 2 Stunden löscht, ist kein Hexenwerk.

Code für eine "einfache gehaltene" Console-App die dann mit 3 Parametern aufgerufen wird:
ScreenRecordBuffer.exe 5 7200 "D:\Ringspeicher"

Parameter 1: Interval in Sekunden in dem die Bilder geschossen werdenParameter 2: Zeit in Sekunden wie lange die Bilder aufgehoben werdenParameter 3: Pfad wo die Bilder abgelegt werden
using System;
using System.Linq;
using System.Drawing;
using System.IO;
using System.Drawing.Imaging;
using System.Windows.Forms;
using System.Threading;

namespace ScreenRecordBuffer {
    class Program {
        static void Main(string args) {
            if (args.Length != 3) {
                helpexit();
            }
            try {
                int interval = Int32.Parse(args);
                int keeptime = Int32.Parse(args[1]);
                string storepath = args[2].Trim();
                if (!Directory.Exists(storepath)) {
                    Console.WriteLine("Error! Supplied path does not exist!");  
                    Environment.Exit(1);
                }
                if (interval < 1 || interval > Int32.MaxValue || keeptime < 1 || keeptime > Int32.MaxValue) {
                    Console.WriteLine("Error! Supplied interval or keeptime is not valid! Must be an Int32 value.");  
                    Environment.Exit(1);
                }
                while (true) {
                    // Save Screenshot
                    using (Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb)) {
                        using (Graphics gfx = Graphics.FromImage(bmp)) {
                            gfx.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
                            string filepath = Path.Combine(storepath, @"Screen_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".jpg");  
                            bmp.Save(filepath, ImageFormat.Jpeg);
                        }
                    }
                    // Cleanup old images
                    foreach (string file in Directory.GetFiles(storepath, "Screen_*.jpg", SearchOption.TopDirectoryOnly).Where(x => File.GetCreationTime(x) < DateTime.Now.AddSeconds(-keeptime))){  
                        File.Delete(file);
                    }

                    // wait to take next image
                    Thread.Sleep(interval * 1000);
                }
                
            } catch (System.Exception ex) {
                Console.WriteLine("Application Exception: " + ex.Message);  
                Environment.Exit(1);
            }
        }
        static void helpexit() {
            Console.WriteLine("Error. You must supply 3 parameters.\n\tParameter 1: Time in Seconds between Screenshots\n\tParameter 2: Time in seconds to keep images stored.\n\tParameter 3: Directory where to store pictures.");  
            Console.ReadLine();
            Environment.Exit(1);
        }
    }
}