AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ein Video der letzten 10 Sekunden erzeugen

Ein Thema von freimatz · begonnen am 30. Jul 2021 · letzter Beitrag vom 30. Jul 2021
Antwort Antwort
freimatz

Registriert seit: 20. Mai 2010
1.442 Beiträge
 
Delphi 11 Alexandria
 
#1

ein Video der letzten 10 Sekunden erzeugen

  Alt 30. Jul 2021, 13:42
Woanders:
...
Wenn MadExcept statt einen Screenshot ein Video der letzten 10 Sekunden erzeugen würde, wäre die Fehlersuche leichter
Frank
Irgendwie finde ich das nicht lustig sondern eine geniale Idee. Könnte man so was nicht implementieren?
Das in madExcept dann einbauen wäre (für mich) dann das kleinste Problem.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: ein Video der letzten 10 Sekunden erzeugen

  Alt 30. Jul 2021, 13:46
Ja, genial. Dann kriegt man automatisch in den meisten Fällen sicher meist so etwas:
Miniaturansicht angehängter Grafiken
1-wait-screen.png  
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: ein Video der letzten 10 Sekunden erzeugen

  Alt 30. Jul 2021, 14:27
Da es mit den Zeitreisen etwas schwierig ist, musst Du ja permanent mitfilmen - was beim Anwender vielleicht ein paar Fragen aufwerfen könnte. Auch wenn Du das Material nach 10 Sekunden ohne Fehlermeldung wieder verwirfst.
Davon aber mal abgesehen:
Windows 10 1903 bringt hierfür eine neue API ("WindowsGraphicsCapture") mit, die auch Video-Overlays und anderes Gelump tadellos erfasst. Ich habe mit einem Demo-Programm getestet, welches diese API implementiert und war durchaus angetan. Es ist eine native API, man müsste da grundsätzlich auch mit Delphi herankommen - aber ich konnte mich bisher nicht damit befassen.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#4

AW: ein Video der letzten 10 Sekunden erzeugen

  Alt 30. Jul 2021, 15:32
Muss es denn direkt ein Video sein?

Hiermit kannst Du ja schonmal ein Bildschirmfoto des angegebenen Formulars machen.
Delphi-Quellcode:
procedure HardCopy(sJpegFile : String; fm : TForm);
Var
          FStream : TStream;
          FBmp : TPicture;
          FJpeg : TJpegImage;
begin
  if SysUtils.FileExists(sJpegFile) then SysUtils.DeleteFile(sJpegFile);
  FStream := TFileStream.Create(sJpegFile,fmCreate);
  fm.WindowState := wsNormal;
  fm.Show;
  fm.Refresh;
  FJpeg := TJpegImage.Create;
  FBmp := TPicture.Create;
  try
    FBmp.Bitmap.Assign(fm.GetFormImage);
    FJpeg.Assign(FBmp.Bitmap);
    FJpeg.SaveToStream(FStream);
  finally
    FStream.Free;
    FJpeg.Free;
    FBmp.Free;
  end;
end;
Wenn man jetzt hergeht und die Fehlerbehandlung der Routine, die Ursprung der Idee war, anpasst
Delphi-Quellcode:
procedure TRWForm.doMouseActivate(AControl: TControl);
begin
  if (not WinControlValid(Self)) or IsDestroying then
    Exit;
  FLastClickedControl := AControl;
  if (Self <> rwScreen.ActiveForm) then
  begin
    try
      if (Visible and CanFocus) then
        SetFocus; // Hier wird Exception ausgelöst!
      rwScreen.ActiveForm := Self;
    except
      on e : Exception do begin
        MessageDlg(e.Message,mtError,[mbOk],0); // <- könnte man auch weglassen.
        if Assigned(Self) and (Self is TForm) then begin
          HardCopy('Einen eindeutigen Dateinamen erstellen, Datum Uhrzeit, GUID oder sowas.', Self);
          // Sinnvollerweise sollte man dann hier auch noch e.Message in eine Logdatei ...
          // schreiben und dabei direkt vermerken, welches Bild zur Fehlermeldung gehört.
        end;
      end;
    end;
  end;
end;
könnte man zumindest schonmal ein Bisserl von dem sehen, was da gerade so auf dem Bildschirm los war.

Ist's kein TForm, so könnte man die Kette der Parents nach oben laufen, bis man was vom Typ TForm findet.

Oder, man macht einfach Hardcopys von allen Formularen:
Delphi-Quellcode:
for i := 0 to Screen.FormCount - 1 do begin
  sJPeg := Format('%s.Error.Jpg',[Screen.Forms[i].Name]);
  HardCopy(sJPeg, Screen.Forms[i]);
end;
Man könnte aber auch z. B. alle x Sekunden per Timer auf diese Art ein Bild machen und davon dann die letzten 10 (oder so) erhalten und jeweils die älteste Datei überschreiben. Beim Programmende wird dann auch dort aufgeräumt. (Frei nach dem Motto: Überwachungskameras zeichnen ja (zum Teil) auch nur alle paar Sekunden ein Bild auf und die Aufnahme werden nach 'ner Weile wieder gelöscht.)

Per Dialog oder Konfiguration könnte man auch den Anwender fragen, ob man im Fehlerfalle Bildschirmfotos erstellen darf ..., wenn nicht, dann lässt man es halt.

Achso: Alles nur unausgegorene Ideen, aber eventuell kannst Du damit ja was anfangen
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#5

AW: ein Video der letzten 10 Sekunden erzeugen

  Alt 30. Jul 2021, 16:16
Einen Screenshot des aktuellen Desktops bzw. der Anwendung macht madexcept doch sowieso schon, wenn man es denn aktiviert hat.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#6

AW: ein Video der letzten 10 Sekunden erzeugen

  Alt 30. Jul 2021, 16:29
Leider gibt es das in den aktuellen Versionen ja nicht mehr, aber bis Version 10.30 gab es bei TestComplete noch den TestRecorder:
Zitat:
TestRecorder allows you to embed the recording capability into your applications. The recorded scripts are fully compatible with TestComplete. Later they can be run in TestComplete or in TestExecute.
Im Programm konnte der User diesen aktivieren und uns die Aufzeichnung schicken. Das war nicht nur deutlich kompakter als ein Video, sondern war häufig auch schon als (halb-)automatischer Test zu gebrauchen. Das fände ich noch hilfreicher als ein Video der letzten 10 Minuten.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.156 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: ein Video der letzten 10 Sekunden erzeugen

  Alt 30. Jul 2021, 17:18
Windows 10 1903 bringt hierfür eine neue API ("WindowsGraphicsCapture") mit, die auch Video-Overlays und anderes Gelump tadellos erfasst. Ich habe mit einem Demo-Programm getestet, welches diese API implementiert und war durchaus angetan.
Hatte damit auch mal etwas gespielt, aber das Projekt bis heute leider nicht fertig bekommen. Das Bildschirm-Abgreifen an sich hat allerdings sehr gut und sehr performant funktioniert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz