SaphireScreen "Blue Alpha v 2.0"

  • Hey :D
    Ich traue mich mal über mein erstes richtiges non TCP Projekt.

    "SaphireScreen"

    Zurzeit ist es relativ primitiv gemacht, doch man kann bis jetzt:
    - Den gesamten Bildschirm aufnehmen
    - Eine bestimmte Region aufnehmen
    - Auswählen ob es als PNG oder als JPEG gespeichert werden soll

    Source:

    Spoiler anzeigen
    [autoit]

    ;*****************************************
    ;CreepyScreen by CreepSore
    ;*****************************************

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

    #include <ScreenCapture.au3>
    #include <WindowsConstants.au3>
    #Include <GuiButton.au3>
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <MsgBoxConstants.au3>

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

    #Region -- GUI --
    Global $Menu = GUICreate("CreepyScreen - Menu",447,172,-1,-1,-1)
    GUISetBkColor(0x6793E2,$Menu)
    Global $Full = GUICtrlCreateButton("Capture Screen",7,3,100,30,-1,-1)
    Global $Region = GUICtrlCreateButton("Capture Region",340,3,100,30,-1,-1)
    Global $About = GUICtrlCreateButton("?",420,150,20,20,-1,-1)
    Global $Exit = GUICtrlCreateButton("Exit",4,152,56,18,-1,-1)
    GUICtrlCreateLabel("Ausgabeformat:",10,50,76,15,-1,-1)
    GUICtrlSetBkColor(-1,"-2")
    GUIStartGroup()
    $R1 = GUICtrlCreateRadio("JPEG",10,70,76,20,-1,-1)
    $R2 = GUICtrlCreateRadio("PNG",10,90,76,20,-1,-1)
    GUISetState( $R1, $GUI_CHECKED )
    GUISetState(@SW_SHOW,$Menu)
    #EndRegion -- GUI --

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg


    Case $Full
    GUISetState( @SW_HIDE, $Menu )
    ToolTip( "5.." )
    Sleep( 1000 )
    ToolTip( "4.." )
    Sleep( 1000 )
    ToolTip( "3.." )
    Sleep( 1000 )
    ToolTip( "2.." )
    Sleep( 1000 )
    ToolTip( "Get Ready.." )
    Sleep( 1000 )
    ToolTip( "" )
    $Test2 = GUICtrlRead( $R1 )
    If $Test2 = "1" Then
    _ScreenCapture_Capture( "Screenshot.jpeg" )
    Sleep( 5000 )
    GUISetState( @SW_SHOW, $Menu )
    Else
    _ScreenCapture_Capture( "Screenshot.png" )
    Sleep( 5000 )
    GUISetState( @SW_SHOW, $Menu )
    EndIf


    Case $Region
    ToolTip( "Wähle Punkt 1 mit F1 aus!", 0, 0, "SaphireScreen" )
    HotKeySet( "{F1}", _x )


    Case $About
    $result = MsgBox(64,"SaphireScreen - Hilfe","SaphireScreen ist ein kostenloses Screenshot-Programm in der Alpha Phase." & @CRLF & "" & @CRLF & "Hilfestellung:" & @CRLF & "1) Wähle das gewünschte Format aus (Keine Auswahl führt zu PNG!)" & @CRLF & "2) Wähle deine gewünschte Art." & @CRLF & "2)a) 'Capture Screen'" & @CRLF & "Bei Capture Screen wird der GESAMTE Bildschirm in 5 Sekunden aufgenommen." & @CRLF & "2)b) 'Capture Region'" & @CRLF & "Bei Capture Region wird ein gewählter Bereich aufgenommen." & @CRLF & "" & @CRLF & "" & @CRLF & "Viel Spaß mit diesem Programm wünscht CreepSore" & @CRLF & @CRLF & "(Exit Button nur genutzt, bis Bug endlich gefixt.)",0)
    Case $Exit
    Exit

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

    EndSwitch
    WEnd

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

    Func _x()
    Global $aPos = MouseGetPos()
    HotKeySet( "{F2}", _y )
    ToolTip( "Wähle Punkt 2 mit F2 aus!", 0, 0, "SaphireScreen" )
    EndFunc

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

    Func _y()
    Global $bPos = MouseGetPos()
    ToolTip( "Drücke F3 um einen Screenshot zu machen!", 0, 0, "SaphireScreen" )
    HotKeySet( "{F3}", _screen )
    EndFunc

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

    Func _screen()
    GUISetState( @SW_HIDE, $Menu )
    Sleep( 1500 )
    ToolTip( "" )
    $Test1 = GUICtrlRead( $R1 )
    If $Test1 = 1 Then
    _ScreenCapture_Capture( "Screenshot.jpeg", $aPos[0], $aPos[1], $bPos[0], $bPos[1])
    MsgBox( 0, "SaphireScreen - Captured", "Screenshot wurde aufgenommen!" )
    Sleep( 2000 )
    GUISetState( @SW_SHOW, $Menu )
    Else
    _ScreenCapture_Capture( "Screenshot.png", $aPos[0], $aPos[1], $bPos[0], $bPos[1])
    MsgBox( 0, "SaphireScreen - Captured", "Screenshot wurde aufgenommen!" )
    Sleep( 2000 )
    GUISetState( @SW_SHOW, $Menu )
    EndIf
    EndFunc

    [/autoit]

    Changelog:

    Spoiler anzeigen

    SaphireScreen - Changelog
    ------------------------------------------------------------------

    /////////////////////////////////////////
    ///Datum: 01.02.2015
    ///Betreff: Blue Alpha 2.0
    ///Bearbeiter: CreepSore
    /////////////////////////////////////////
    ------------------------------------------------------------------
    v 1.0
    --> GUI wurde erstellt
    --> Fullscreen-Capture Funktion hinzugefügt
    --> Bugfixes

    v1.5
    --> Bugfix der Region Function. (Danke an timee000)
    --> "About" Button wurde hinzugefügt

    v2.0
    --> Neue GUI
    --> "About" Button zu "Hilfe" Button geändert!
    --> Neue Funktion! Auswahl der Bildart zwischen "JPEG" und "PNG"

    ------------------------------------------------------------------

    Neueste Version:
    "Blue Alpha v2.0"

    Mit dem nächsten Update, werde ich mehrere einstellungsmöglichkeiten hinzufügen.
    Und JA ich weiß, dass es bereits um einiges bessere ScreenshotProgramme gibt.

    Aber wie irgendjemand bereits gesagt hat:
    "Mit kleinen Schritten zum Erfolg!"


    Teilt doch eure Meinung!

    4 Mal editiert, zuletzt von CreepSore (9. Februar 2015 um 20:37)

  • Ich hab mir das Script kurz durchgelesen und direkt einen Fehler bemerkt ohne das Programm zu starten :D
    Die Funktion _ScreenCapture_Capture akzeptiert nur left, top Werte die niedriger sind als right, bottom Werte.

    D.h. du musst noch einbauen, das er die Koordinaten gegenrechnet und somit ein vernünftiger Screenshot ensteht.

    Der 2. Punkt ist ein Verbesserungsvorschlag bzw. Anregung.

    [autoit]

    #include <ScreenCapture.au3>
    #include <Misc.au3>

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

    Local $bLMBpressed = False, $aFirstPos[2], $aSecondPos[2]

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

    While 1
    If $bLMBpressed = False And _IsPressed(01) Then
    $bLMBpressed = True
    $aFirstPos = MouseGetPos()
    ElseIf $bLMBpressed = True And Not _IsPressed(01) Then
    $bLMBpressed = False
    $aSecondPos = MouseGetPos()
    ExitLoop
    EndIf
    WEnd

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

    ;~ If FileExists(@DesktopDir & "\Screen.jpg") Then FileDelete(@DesktopDir & "\Screen.jpg")
    _ScreenCapture_Capture(@DesktopDir & "\Screen.jpg", $aFirstPos[0], $aFirstPos[1], $aSecondPos[0], $aSecondPos[1])

    [/autoit]
  • was sollen die ganzen sleep befehle?

    und das include-once ist da ziemlich sinnlos

  • D.h. du musst noch einbauen, das er die Koordinaten gegenrechnet und somit ein vernünftiger Screenshot ensteht.

    Hmm.. ich hatte bis jetzt bei den Tests keine Probleme :/ Naja, ich werds mal im Hinterkopf behalten, falls doch mal Fehler auftreten würden.

  • was sollen die ganzen sleep befehle?


    Das ist nur zur Sicherheit, damit nicht doch die GUI aufgenommen wird.

    EDIT:
    Falls du die direkt bei den Tooltips meinst... Das sollte nen kleinen Countdown darstellen.
    Mir ist klar dass man das auch anders machen kann, aber wegen sowas kleinem ist das auch egal.