_ScreenCapture macht keinen Screenshot

  • Hallo,
    da ich in einem Spiel gerne Screenshots von meinen guten Abschussquoten mache, habe ich mir ein Tool geschrieben, dass mir ganz einfach einen Screenshot erstellt, wenn ich möchte.

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ScreenCapture.au3>

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("{PAUSE}","_GUI")
    HotKeySet("{RCTRL}","_Screenshot")

    [/autoit] [autoit][/autoit] [autoit]

    $Status=0

    [/autoit] [autoit][/autoit] [autoit]

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Screenshooter", 211, 129, -1, -1)
    $Button1 = GUICtrlCreateButton("Aktivieren", 64, 24, 75, 25, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Deaktivieren", 64, 80, 75, 25, $WS_GROUP)
    GUISetState(@SW_HIDE)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE)
    Case $Button1
    _Aktivieren()
    Case $Button2
    _Deaktivieren()
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _GUI()
    GUISetState(@SW_SHOW)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Aktivieren()
    $Status=1
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Deaktivieren()
    $Status=0
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Screenshot()
    $Datum=@MDAY&"."&@MON&"."&@YEAR
    $Zeit=@MIN&":"&@HOUR
    If $Status=1 Then
    _ScreenCapture_Capture(@ScriptDir&"\"&$Datum&"\Screenshot"&$Zeit&".jpg")
    EndIf
    EndFunc

    [/autoit]

    Die Frage ist einfach:
    Warum funktioniert es nicht??

    2 Mal editiert, zuletzt von PokerFace (25. Dezember 2010 um 22:37)

  • Hi,
    1. Die Ordner in die du reinspeicherst müssen existieren
    2. in Einem Dateinamen darf kein : sein.

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ScreenCapture.au3>

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("{PAUSE}", "_GUI")
    HotKeySet("{RCTRL}","_Screenshot")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Status = 0

    [/autoit] [autoit][/autoit] [autoit]

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Screenshooter", 211, 129, -1, -1)
    $Button1 = GUICtrlCreateButton("Aktivieren", 64, 24, 75, 25, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Deaktivieren", 64, 80, 75, 25, $WS_GROUP)
    GUISetState(@SW_HIDE)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE)
    Case $Button1
    _Aktivieren()
    Case $Button2
    _Deaktivieren()
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _GUI()
    GUISetState(@SW_SHOW)
    EndFunc ;==>_GUI

    [/autoit] [autoit][/autoit] [autoit]

    Func _Aktivieren()
    $Status = 1
    EndFunc ;==>_Aktivieren

    [/autoit] [autoit][/autoit] [autoit]

    Func _Deaktivieren()
    $Status = 0
    EndFunc ;==>_Deaktivieren

    [/autoit] [autoit][/autoit] [autoit]

    Func _Screenshot()
    $Datum = @MDAY & "." & @MON & "." & @YEAR
    $Zeit = @MIN & "_" & @HOUR
    If $Status = 1 Then
    DirCreate(@ScriptDir & "\" & $Datum & "\Screenshot")
    _ScreenCapture_Capture(@ScriptDir & "\" & $Datum & "\Screenshot\" & $Zeit & ".jpg")
    EndIf
    EndFunc ;==>_Screenshot

    [/autoit]


    So funzts

  • blubbstar hat Recht, falls das Spiel direkt einen eigenen Framebuffer auf der Grafikkarte benutzt, bekommt Windows davon garnichts mit. Günstigstenfalls bekommt man einfach nur einen schwarzen Screen.
    VideoProgramme machen das oft auch so, da hat man dann einen Screen mit den tollen Menüs, und an Stelle des Bildes(Videos) ist eine schwarze Fläche....so wie hier, übrigens XP:
    autoit.de/wcf/attachment/12167/


  • Hast du das ausprobiert?
    Ich habe es ausgeführt, durch den Button $Status auf 1 gesetzt und dann mal die rechte STRG Taste gedrückt.
    Kein Ordner wird erstellt, kein Bild erscheint. :(

    EDIT: Hat sich erledigt, ich habe einfach ne andere Taste für den Screenshot zugewiesen. Keine Ahnung, warum STRG etc. nicht angenommen werden. Bei Druck hat es geklappt ! :)

    PS: Ich bekomme schwarzen BIldschirm. :(
    So ein Mist !

    Einmal editiert, zuletzt von PokerFace (25. Dezember 2010 um 22:38)

  • Zitat

    Keine Ahnung, warum STRG etc. nicht angenommen werden

    Zitat

    PS: Ich bekomme schwarzen BIldschirm. :(


    Wenn du einen Screenshot von einem Spiel macht? Bei mir funktioniert das Programm unter normalen Umständen nämlich problemlos.

  • Okay ich habe es in Call of Duty Modern Warfare 2 MP getestet.
    Ich wollte es nutzen um exotische Abschüsse oder wunderbare Kill-Raten festzuhalten.
    Das Spiel läuft ja maximiert.

    Ich erhalte jedoch nur ein schwarzes Bild.

  • Zitat

    Okay ich habe es in Call of Duty Modern Warfare 2 MP getestet.
    Ich wollte es nutzen um exotische Abschüsse oder wunderbare Kill-Raten festzuhalten.
    Das Spiel läuft ja maximiert.

    Ich erhalte jedoch nur ein schwarzes Bild.


    Du solltest dir schon ALLE Beiträge durchlesen :rolleyes: .

    Zitat von blubbstar

    Bei Spielen mit DirectX bzw. OpenGL unter Win Vista / 7 kann man so keine Screenshots machen. Unter XP lief das noch.
    Es gibt eine Lösung, aber ob die in AutoIt schon existiert, keine Ahnung.

  • Ich hab den Beitrag gelesen. Ich wollte damit nur meine "Leser" auf dem Stand der Dinge halten.

    blubbstar:
    "Es gibt eine Lösung" - Kannst du das präzesieren?
    Vielleicht kann ich das ja in AutoIt nachbauen, kommt eben auf den Umfang an.