131361
Goto Top

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?

Content-Key: 358048

Url: https://administrator.de/contentid/358048

Printed on: April 18, 2024 at 02:04 o'clock

Member: sabines
sabines Dec 13, 2017 at 08:13:30 (UTC)
Goto Top
Moin,

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

Gruss
Mitglied: 134464
Solution 134464 Dec 13, 2017 updated at 11:23:03 (UTC)
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);
        }
    }
}