Hotkey mit fortlaufenden Nummern

  • Hallo,

    ich möchte ein Programm für die Arbeit schreiben, mit dem ich mehrere Screenshots machen kann indem ich nur "Druck" drücke. Ich habe es soweit, dass wenn ich "Druck" drücke, mehrere Screenshots gespeichert werden mit fortlaufender Nummer, allerdings werden alle auf einmal gemacht.
    Hier mal mein Code

    #include <GUIConstants.au3>

    #include <ScreenCapture.au3>

    #include <Misc.au3>

    HotKeySet ("{PRINTSCREEN}", "screen")

    Func screen()

    For $i = 1 to 5 Step 1 ;Anzahl Screenshots

    Local $hBmp

    $hBmp = _ScreenCapture_Capture ("")

    $name = _ScreenCapture_SaveImage (@ScriptDir & "\ScreenImage" & $i & ".jpg",$hBmp)

    Next

    EndFunc ;==>_Main


    While 1

    WEnd

    Kann mir jemand helfen?
    Besten Dank!

  • Wirst wohl kaum Hilfe bekommen, wenn du nicht weißt was du willst.

    Was soll das Script machen Screenshot alle Minute einmal oder sollen 4 verschiedene Bereiche

    des Bildschirms geknippst werden oder vielleicht ganz etwas anderes.

    Sorry hier gibts nur Programmierer keine Hellseher.

    Dann laß mal hören.

  • Ich möchte mehrere Screenshots machen.

    Mit der Taste "Druck" soll ein Screenshot mit dem Name: ScreenImage1 (@ScriptDir & "\ScreenImage" & $i & ".jpg",$hBmp) aufgenommen und als Datei gespeichert werden.

    Dann suche ich mir selbst weitere Daten raus die ich per Screenshot abspeichern möchte.
    Dann möchte ich wieder nur "Druck" drücken und das Script soll den nächsten Screenshot mit ScreenImage2 abspeichern.

    An sich funktioniert das mit dem oben zu sehenden Script bereits, dass er die Nummern fortlaufend hat, allerdings macht er alle 5 Screenshots (For $i = 1 to 5 Step 1 ;Anzahl Screenshots) auf einmal.

    Ich möchte es halt einzeln mit jedem Tastendruck machen.

  • Hallo,

    ich habe es bereits selbst gelöst.

    #include <ScreenCapture.au3>

    #include <Misc.au3>

    HotKeySet ("{PRINTSCREEN}", "screen")

    $nr = 1

    Func screen()

    If FileExists(@ScriptDir & "\ScreenImage" & $nr & ".jpg") Then $nr = $nr + 1

    Local $hBmp

    $hBmp = _ScreenCapture_Capture ("")

    $name = _ScreenCapture_SaveImage (@ScriptDir & "\ScreenImage" & $nr & ".jpg",$hBmp)

    EndFunc

    While 1

    WEnd

    Mit freundlichen Grüßen

  • Hier hast du eine Version die funktioniert, dein Script überschreibt dir die alten Screenshots nach einem Neustart des Scripts.

    Darfst gerne ausprobieren.

    Ich habs getestet es funzt einwandfrei und hat eine zigfach kleinere Systembelastung als dein Script,

    aber du solltest eventuell noch einen Hotkey fürs Beenden einfügen, Kriegst sicherlich auch selbst hin oder?


    Einmal editiert, zuletzt von Tuxedo (26. Oktober 2017 um 09:58)

  • Habe das mal in meinem kompletten Script eingebunden, das funktioniert leider nicht ganz so.
    Aber ich schaue noch mal, ich weiß was du meinst...


    1. While FileExists(@ScriptDir & "\ScreenImage" & $nr & ".jpg")
    2. = $nr + 1
    3. WEnd

    While und Wend... richtig?

  • Ja wäre richtig aber bei Zeile 2 fehlt noch was , das müsste heissen

    $nr = $nr+1 oder einfacher $nr += 1

    Kannst beides verwenden ist gleichwertig ist nur Geschmackssache.

  • So habs...

    • Offizieller Beitrag

    Das verstehe ich jetzt nicht ganz so

    Dann benutze lieber das Beispiel von Tuxedo aus Post#6.

    Er verwendet _ScreenCapture_Capture mit dem Dateinamen. Da tritt das Problem nicht auf.

    Aber es funktioniert so...

    Aber nicht lange! Zum Einen ist die Anzahl an offenen Handles begrenzt und zum Anderen wird Dir irgendwann der Speicher ausgehen.

  • Meinst du das so?

    Oder auch so?

    Welche Variante ist besser?

    • Offizieller Beitrag

    Welche Variante ist besser?

    Diese: ;)