tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
841
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Afritus Afritus ist offline Mitglied Silber
    Registriert seit
    Nov 2009
    Beiträge
    54
    Hallo!

    Vorerst möchte ich sagen, dass ich schon 2 solche Themen in diesem Forum gefunden habe, jedoch behandeln diese nicht das genau gleiche Problem und auch funktionierten deren Lösungen bei mir nicht.
    Ich habe vor, ein Programm zu schreiben, das beim Klicken auf den "START"-Button alle 10 Sekunden einen Screenshot erstellt, und diese speichert. Beim Klicken auf einen zweiten "Stop"-Button soll diese Schleife unterbrochen werden.

    Nun habe ich mit dem ersten Button begonnen und folgendes geschrieben:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    Public Class Form1
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
         
            Dim b As New Bitmap(1280, 800)
            Using g As Graphics = Graphics.FromImage(b)
                g.CopyFromScreen(0, 0, 0, 0, New Size(1280, 800))
            End Using
            b.Save("C:\screenshot1.jpg", Imaging.ImageFormat.Jpeg)
     
            System.Threading.Thread.Sleep(10000)
     
            Dim a As New Bitmap(1280, 800)
            Using g As Graphics = Graphics.FromImage(a)
                g.CopyFromScreen(0, 0, 0, 0, New Size(1280, 800))
            End Using
            a.Save("C:\screenshot2.jpg", Imaging.ImageFormat.Jpeg)
     
     
        End Sub
     
    End Class

    Nun werden beim Klicken auf den "START"-Button zwei Screenshots erstellt, mit einer Verzögerung von 10 Sekunden.
    Nun hätte ich 2 Fragen:
    1. Ich krieg das mit der Schleife nicht hin. Ich hab versucht, den Namen des Bildes durch eine Variable zu ersetzen, und dieser Variable die Systemzeit zuzuweisen, jedoch bin ich entweder zu dumm, die Befehle richtig anzuschreiben oder aber es klappt einfach nicht. Außerdem müsste nicht nur der Name des Bildes bei jedem Screenshot geändert werden, sondern auch der Buchstabe (beim ersten das "b", beim zweiten das "a").
    2. Wenn die Schleife dann läuft, wie kann ich diese mit einem zweiten "STOP"-Button augenblicklich beenden? Wenn bei mir dieses Programm läuft, sind für diese Dauer alle anderen Buttons komischerweise deaktiviert bzw. kann ich diese nicht anklicken.

    VIELEN Dank schonmal für die Hilfe und mit freundlichen Grüßen,
    Markus
     

  2. #2
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Hallo Markus,

    ich fange mal mit deinem 2. Punkt an.
    Die Variante mit der Schleife ist der denkbar ungünstigste Lösungsansatz, weil du damit die ganze GUI blockierst. Besser du installierst einen Timer mit dem 10-Sekunden-Intervall, den du dann mit den Start/Stopp-Buttons startest oder anhältst.

    Einen Zeitstempel kannst du dir mit Hilfe der DateTime-Struktur generieren, z.B.:
    Code vb:
    1
    
    DateTime.Now.ToShortDateString() + DateTime.Now.ToLongTimeString()
    Zu dem Problem mit "a" und "b": Du brauchst Bitmap und Graphics-Object nur einmal anzulegen:
    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    Dim b As New Bitmap(1280, 800)
    Using g As Graphics = Graphics.FromImage(b)
        g.CopyFromScreen(0, 0, 0, 0, New Size(1280, 800))
        b.Save("C:\screenshot1.jpg", Imaging.ImageFormat.Jpeg)
     
        System.Threading.Thread.Sleep(10000)
     
        g.CopyFromScreen(0, 0, 0, 0, New Size(1280, 800))
        b.Save("C:\screenshot2.jpg", Imaging.ImageFormat.Jpeg)
    End Using
    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  3. #3
    Afritus Afritus ist offline Mitglied Silber
    Registriert seit
    Nov 2009
    Beiträge
    54
    Vielen Dank für die Antwort!

    Das mit den Buchstaben ("b" und "a") hab ich nun ausgebessert.

    Aber ich verstehe nicht ganz, wo ich diesen Code einbauen soll, damit der Bildname durch die Systemzeit ersetzt wird:
    Code :
    1
    
    DateTime.Now.ToShortDateString() + DateTime.Now.ToLongTimeString()

    Das mit dem Timer hab ich nun auch geschafft, vielen Dank!

    MfG
    Geändert von Afritus (19.11.09 um 17:30 Uhr)
     

  4. #4
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    zum Beispiel so:
    Code vb:
    1
    
    Save("C:\screenshot_" + DateTime.Now.ToShortDateString() + DateTime.Now.ToLongTimeString() + ".jpg", ...
    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  5. #5
    Afritus Afritus ist offline Mitglied Silber
    Registriert seit
    Nov 2009
    Beiträge
    54
    Ok, das geht bei mir nicht.
    Hab aber jetzt herumprobiert und das ganze so gelöst:

    Code :
    1
    
    Save("C:\Umbrella_Data\screenshot" & Format$(Now, "dd-mm-yy hh-mm-ss") & ".jpg", Imaging.ImageFormat.Jpeg)

    Vielen Dank für deine Hilfe, hätte ich alles ohne dich nicht geschafft

    MfG
    Afritus
    Geändert von Afritus (19.11.09 um 21:01 Uhr)
     

  6. #6
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Zitat Zitat von Afritus Beitrag anzeigen
    Hab aber jetzt herumprobiert und das ganze so gelöst:

    Code :
    1
    
    Save("C:\Umbrella_Data\screenshot" & Format$(Now, "dd-mm-yy hh-mm-ss") & ".jpg", Imaging.ImageFormat.Jpeg)
    Super, VB ist nämlich nicht so mein Ding; Ich verwende nur C#

    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

Ähnliche Themen

  1. SWT Screenshots erstellen
    Von Thomas Darimont im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 01.09.11, 13:48
  2. Beenden Button erstellen
    Von hotze_klotz im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 11.09.07, 13:42
  3. for Schleife beenden
    Von campari im Forum PHP
    Antworten: 14
    Letzter Beitrag: 13.12.06, 17:10
  4. screenshots erstellen
    Von Tosso im Forum VisualStudio & MFC
    Antworten: 3
    Letzter Beitrag: 06.07.04, 10:04
  5. Von DVD Filmen screenshots erstellen
    Von Andrew im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 6
    Letzter Beitrag: 15.12.02, 17:49

Stichworte