Bildschirmfotos speichern

  • ich hab nen kleines Skript zum speichern von Bildschirmfotos erstellt.
    wenn ich screenshots mache dann kommen die meistens einfach in paint und werden dann gespeichert.
    aber ich bin zu faul andauernd paint zu öffnen, foto einzufügen, zu speichern, auszuwählen wo und dann noch zu benennen :cursing: , deswegen hab ich das Skript geschriebn.
    also es öffnet sich ne gui (ohne trayicon). auf der kann man auswählen wo die fotos gespeichert werden sollen, ob die Maus auf den Fotos zu sehen sein soll, welche Endung die Fotos haben sollen und man kann den Zähler für die bildnamen (die bilder heißen screen1, screen2 usw.) zurücksetzen.
    Wenn man die GUI minimiert verschwindet sie aus der taskleiste und es erscheint das trayicon , man kann die gui dann über das traymenü beenden oder wiederherstelln.
    Die aktuelle bildnummer sowie die optionen werden in einer ini gespeichert.
    Neuerungen:

    • Mit Alt+Druck kann man jetzt ein Screenshot vom aktuellen Fenster machen.
    • Im traymenü steht jetzt Wiederherstellen anstatt maximieren.
    • Endungen können über ini hinzugefügt und entfernt werden
    • Bei Abbruch des Folderselect-Dialogs des "Fotos speichern in...-buttons" wird nun das vorher ausgewählte verzeichniss angezeigt.
    • Fade-In und out
    • "Ordner öffnen"-Button hinzugefügt

    Code:

    Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.2.10.0
    Author: J.A.K.

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

    Script Function:
    Speichert Bildschirmfotos automatisch.

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

    #ce ----------------------------------------------------------------------------
    #include <screencapture.au3>
    #include <guiconstants.au3>
    #include <process.au3>
    #NoTrayIcon
    Opt("GUICloseOnESC", 0)
    Opt("TrayAutoPause", 0)
    Opt("TrayMenuMode", 1)
    Opt("TrayOnEventMode", 1)
    Opt("GUIEventOptions", 1)

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

    ;variablen
    $title = "J.A.K.'s Screen Printer"
    $ending = IniRead("options.ini", "options", "endings", ".jpg|.gif|.bmp|.png")
    $end = IniRead("options.ini", "options", "ending", ".jpg")
    $count = IniRead("options.ini", "count", "counter", "1")
    $picdir = IniRead("options.ini", "options", "picdir", @UserProfileDir & "\pictures")
    $mouse = IniRead("options.ini", "options", "mouse", "GUI_CHECKED")

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

    GUICreate($title, 250, 165)

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

    HotKeySet("{printscreen}", "print")
    HotKeySet("!{PrintScreen}","PrintWnd")

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

    ;Button zum bestimmen des Speicherorts
    $btn_picdir = GUICtrlCreateButton("Fotos speichern in...", 10, 10)
    GUICtrlSetTip(-1, "Verzeichnis zum speichern der Fotos wählen", "Fotos speichern in...")
    $label_picdir = GUICtrlCreateLabel($picdir, 10, 47, 350)
    ;Button zum öffnen des Speicherortes
    $btn_openfolder = GUICtrlCreateButton("Ordner öffnen", 120, 10)
    GUICtrlSetTip(-1, "Ordner mit den Fotos öffnen", "Ordner öffnen")
    ;Checkbox zum ein- oder ausblenden der Maus
    $box_mouse = GUICtrlCreateCheckbox("Maus zeigen", 10, 72)
    GUICtrlSetTip(-1, "Maus im Foto ein- bzw. ausblenden", "Maus zeigen")
    GUICtrlSetState($box_mouse, $mouse)
    ;Combobox zur Bestimmung der Endung
    GUICtrlCreateLabel("Endung",10, 1360)
    $combo_ending = GUICtrlCreateCombo("", 10, 103)
    GUICtrlSetData($combo_ending, $ending)
    GUICtrlSetTip(-1, "Endung der Fotos wählen", "Dateiendung")
    GUICtrlSetData($combo_ending, $end)
    ;Button zum zurücksetzen des Zählers, der die Zahl am Ende des Bildernamens bestimmt.
    $btn_counter = GUICtrlCreateButton("Bildzähler zurücksetzen", 9, 135)
    GUICtrlSetTip(-1, "Setzt Bildzähler auf 1", "Bildzähler zurücksetzen")

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

    ;Tray-item zum Maximieren
    $Tray_show = TrayCreateItem("Wiederherstellen", -1, 2)
    TrayItemSetOnEvent($Tray_show, "maximize")
    ;Tray-item zum Schließen.
    $Tray_exit = TrayCreateItem("Schließen", -1, 3)
    TrayItemSetOnEvent($Tray_exit, "quit")
    ;Tray-item um den Speicherordner zu öffnen.
    TrayCreateItem("Fotos zeigen", -1, 0)
    TrayItemSetOnEvent(-1, "openfolder")
    ;Seperator im Tray zwischen maximieren und schliessen.
    TrayCreateItem("", -1, 1)

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

    ;nachdem alle controls erstellt sind wird das GUI gezeigt.
    WinSetTrans($title, "", 0)
    GUISetState()
    fade("in")

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    quit()
    Case $msg = $GUI_EVENT_MINIMIZE
    fade("out")
    GUISetState(@sw_hide)
    Opt("TrayIconHide", 0)
    Case $msg = $btn_picdir
    $fileselect = FileSelectFolder("Fotos speichern in...", -1, 7,@UserProfileDir & "\pictures")
    If @error Then
    ;ich mag not einfach nicht ;-P
    Else
    $picdir = $fileselect
    EndIf
    GUICtrlSetData($label_picdir, $picdir)
    Case $msg = $btn_counter
    IniWrite("options.ini", "count", "counter", "1")
    Case $msg = $btn_openfolder
    openfolder()
    EndSelect
    $ending = IniRead("options.ini", "options", "endings", ".jpg|.gif|.bmp|.png")
    WEnd

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

    Func print()
    If GUICtrlRead($box_mouse) = $gui_checked Then
    $mouse = True
    ElseIf GUICtrlRead($box_mouse) = $gui_unchecked Then
    $mouse = False
    EndIf
    $count = IniRead("options.ini", "count", "counter", "1")
    IniWrite("options.ini", "count", "counter", $count+1)
    $end = GUICtrlRead($combo_ending)
    _ScreenCapture_Capture($picdir & "\screen" & $count & $end,0,0,-1,-1,$mouse)
    EndFunc

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

    Func printWnd()
    If GUICtrlRead($box_mouse) = $gui_checked Then
    $mouse = True
    ElseIf GUICtrlRead($box_mouse) = $gui_unchecked Then
    $mouse = False
    EndIf
    $count = IniRead("options.ini", "count", "counter", "1")
    IniWrite("options.ini", "count", "counter", $count+1)
    $end = GUICtrlRead($combo_ending)
    $title = WinGetTitle("")
    $hWnd = WinGetHandle($title)
    _ScreenCapture_CaptureWnd($picdir & "\screen" & $count & $end, $hWnd, 0, 0, -1, -1, $mouse)
    EndFunc

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

    Func quit()
    IniWrite("options.ini", "options", "picdir", $picdir)
    IniWrite("options.ini", "options", "ending", GUICtrlRead($combo_ending))
    IniWrite("options.ini", "options", "mouse", GUICtrlRead($box_mouse))
    IniWrite("options.ini", "options", "endings", $ending)
    fade("out")
    Exit
    EndFunc

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

    Func maximize()
    GUISetState()
    fade("in")
    Opt("TrayIconHide", 1)
    EndFunc

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

    Func fade($dir, $title = $title)
    If $dir = "in" Then
    For $trans = 0 To 255
    WinSetTrans($title,"",$trans)
    $trans+=1
    WinSetTrans($title,"",$trans)
    $trans+=1
    WinSetTrans($title,"",$trans)
    $trans+=1
    WinSetTrans($title,"",$trans)
    Sleep(1)
    Next
    EndIf
    If $dir = "out" Then
    For $trans = 255 To 0 Step -1
    WinSetTrans($title,"",$trans)
    $trans-=1
    WinSetTrans($title,"",$trans)
    $trans-=1
    WinSetTrans($title,"",$trans)
    $trans-=1
    WinSetTrans($title,"",$trans)
    Sleep(1)
    Next
    EndIf
    EndFunc

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

    Func openfolder()
    _RunDOS('Explorer "' & $picdir & '"')
    EndFunc

    [/autoit]


    angehängt sind die .ico-datei, die .exe-datei und die .au3-datei, dann müsst ihr nicht auf das icon verzichten ;)

    wie findet ihr es?

    6 Mal editiert, zuletzt von twister (12. Juli 2008 um 18:57)

  • Okay, wenn nicht gerade jemand schneller ist als ich, bin ich der erste der sagt: "sehr gut".

    Und ich dachte bei der Überschrift, Du hast eine Digi-Knips und machst ein Foto von Deinem TFT. ;):rofl:

    Gruß, Crazy-A.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • kleine frage an die profis unter uns. ist es mit autoit möglich videos vom bilderschirm zu erstellen (wie z.b. fraps)?

  • danke für eure kommentare freut mich wenns euch gefällt.
    und ich habe es gerade eben um die Idee von anno2008 erweitert (s. 1. Post)
    ich weiß nicht ob es möglich ist mit autoit vom bildschirm aufzunehmen ich glaub aber leider nich ;(

    Einmal editiert, zuletzt von twister (7. Juni 2008 um 13:13)

  • Naja, eigentlich geht es schon. Man schreibt einfach ein Screenshotscript, welches 25 Bilder pro Sekunde abspeichert. Natürlich könnte man das dann noch zusammenfügen, dass es ein richtiger Film wird :)

  • Zitat

    Naja, eigentlich geht es schon. Man schreibt einfach ein Screenshotscript, welches 25 Bilder pro Sekunde abspeichert. Natürlich könnte man das dann noch zusammenfügen, dass es ein richtiger Film wird :)

    meinst du zusammenfügen mit einem programm?
    oder geht das auch mit autoit?

  • Du kannst den WMEncoder verwenden. Der kann das über eine GUI, aber kann auch als ObjCreate in AutoIt eingebunden werden.
    [ ObjCreate("WMEncEng.WMEncoder") ]

  • hab jetz noch ein paar sachen verbessert:

    • wenn man beim folderselect-dialog auf abbrechen klickt kommt man nich mehr zum standard verzeichniss sondern zum vorher ausgewählten
    • beim traymenü steht nich mehr maximieren sondern wiederherstellen
    • man kann über die ini endungen hinzufügen

    weitere infos im ersten post

  • @ twister:
    Das mit dem Zusammenfügen war eigentlich nur Theorie - sowas übersteigt meine Kentnisse ;) Kannst den Ansatz ja aber mal weiter verfolgen.

    edit:
    Vielleicht auch das ganze per MovieMaker-Fernsteuerung machen.

  • hatte grade die idee den fade effekt (von nem anderen prog) auf den screener zu übertragen.
    und wo ich grad dabei war hab ich auch noch einen button hinzugefügt mit dem man den speicherordner öffnen kann (auch aus dem tray aufrufbar).

  • Ich habe das gerade getestet...
    hab das fenster minimiert..und wollte danach das fenster wiederherstellen aber dann würde mein Miranda Fenster minimiert...mit deiner Fade-animation(Sehr schick btw)

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer

  • Teste es mal so:

    Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.2.10.0
    Author: J.A.K.

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

    Script Function:
    Speichert Bildschirmfotos automatisch.

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

    #ce ----------------------------------------------------------------------------
    #include <screencapture.au3>
    #include <guiconstants.au3>
    #include <process.au3>
    #NoTrayIcon
    Opt("GUICloseOnESC", 0)
    Opt("TrayAutoPause", 0)
    Opt("TrayMenuMode", 1)
    Opt("TrayOnEventMode", 1)
    Opt("GUIEventOptions", 1)

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

    ;variablen
    $title = "J.A.K.'s Screen Printer"
    $ending = IniRead("options.ini", "options", "endings", ".jpg|.gif|.bmp|.png")
    $end = IniRead("options.ini", "options", "ending", ".jpg")
    $count = IniRead("options.ini", "count", "counter", "1")
    $picdir = IniRead("options.ini", "options", "picdir", @UserProfileDir & "\pictures")
    $mouse = IniRead("options.ini", "options", "mouse", "GUI_CHECKED")

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

    GUICreate($title, 250, 165)

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

    HotKeySet("{printscreen}", "print")
    HotKeySet("!{PrintScreen}","PrintWnd")

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

    ;Button zum bestimmen des Speicherorts
    $btn_picdir = GUICtrlCreateButton("Fotos speichern in...", 10, 10)
    GUICtrlSetTip(-1, "Verzeichnis zum speichern der Fotos wählen", "Fotos speichern in...")
    $label_picdir = GUICtrlCreateLabel($picdir, 10, 47, 350)
    ;Button zum öffnen des Speicherortes
    $btn_openfolder = GUICtrlCreateButton("Ordner öffnen", 120, 10)
    GUICtrlSetTip(-1, "Ordner mit den Fotos öffnen", "Ordner öffnen")
    ;Checkbox zum ein- oder ausblenden der Maus
    $box_mouse = GUICtrlCreateCheckbox("Maus zeigen", 10, 72)
    GUICtrlSetTip(-1, "Maus im Foto ein- bzw. ausblenden", "Maus zeigen")
    GUICtrlSetState($box_mouse, $mouse)
    ;Combobox zur Bestimmung der Endung
    GUICtrlCreateLabel("Endung",10, 1360)
    $combo_ending = GUICtrlCreateCombo("", 10, 103)
    GUICtrlSetData($combo_ending, $ending)
    GUICtrlSetTip(-1, "Endung der Fotos wählen", "Dateiendung")
    GUICtrlSetData($combo_ending, $end)
    ;Button zum zurücksetzen des Zählers, der die Zahl am Ende des Bildernamens bestimmt.
    $btn_counter = GUICtrlCreateButton("Bildzähler zurücksetzen", 9, 135)
    GUICtrlSetTip(-1, "Setzt Bildzähler auf 1", "Bildzähler zurücksetzen")

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

    ;Tray-item zum Maximieren
    $Tray_show = TrayCreateItem("Wiederherstellen", -1, 2)
    TrayItemSetOnEvent($Tray_show, "maximize")
    ;Tray-item zum Schließen.
    $Tray_exit = TrayCreateItem("Schließen", -1, 3)
    TrayItemSetOnEvent($Tray_exit, "quit")
    ;Tray-item um den Speicherordner zu öffnen.
    TrayCreateItem("Fotos zeigen", -1, 0)
    TrayItemSetOnEvent(-1, "openfolder")
    ;Seperator im Tray zwischen maximieren und schliessen.
    TrayCreateItem("", -1, 1)

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

    ;nachdem alle controls erstellt sind wird das GUI gezeigt.
    WinSetTrans("J.A.K.'s Screen Printer", "", 0)
    GUISetState()
    fade("in", "J.A.K.'s Screen Printer")

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    quit()
    Case $msg = $GUI_EVENT_MINIMIZE
    fade("out", "J.A.K.'s Screen Printer")
    GUISetState(@sw_hide)
    Opt("TrayIconHide", 0)
    Case $msg = $btn_picdir
    $fileselect = FileSelectFolder("Fotos speichern in...", -1, 7,@UserProfileDir & "\pictures")
    If @error Then
    ;ich mag not einfach nicht ;-P
    Else
    $picdir = $fileselect
    EndIf
    GUICtrlSetData($label_picdir, $picdir)
    Case $msg = $btn_counter
    IniWrite("options.ini", "count", "counter", "1")
    Case $msg = $btn_openfolder
    openfolder()
    EndSelect
    $ending = IniRead("options.ini", "options", "endings", ".jpg|.gif|.bmp|.png")
    WEnd

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

    Func print()
    If GUICtrlRead($box_mouse) = $gui_checked Then
    $mouse = True
    ElseIf GUICtrlRead($box_mouse) = $gui_unchecked Then
    $mouse = False
    EndIf
    $count = IniRead("options.ini", "count", "counter", "1")
    IniWrite("options.ini", "count", "counter", $count+1)
    $end = GUICtrlRead($combo_ending)
    _ScreenCapture_Capture($picdir & "\screen" & $count & $end,0,0,-1,-1,$mouse)
    EndFunc

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

    Func printWnd()
    If GUICtrlRead($box_mouse) = $gui_checked Then
    $mouse = True
    ElseIf GUICtrlRead($box_mouse) = $gui_unchecked Then
    $mouse = False
    EndIf
    $count = IniRead("options.ini", "count", "counter", "1")
    IniWrite("options.ini", "count", "counter", $count+1)
    $end = GUICtrlRead($combo_ending)
    $title = WinGetTitle("")
    $hWnd = WinGetHandle($title)
    _ScreenCapture_CaptureWnd($picdir & "\screen" & $count & $end, $hWnd, 0, 0, -1, -1, $mouse)
    EndFunc

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

    Func quit()
    IniWrite("options.ini", "options", "picdir", $picdir)
    IniWrite("options.ini", "options", "ending", GUICtrlRead($combo_ending))
    IniWrite("options.ini", "options", "mouse", GUICtrlRead($box_mouse))
    IniWrite("options.ini", "options", "endings", $ending)
    fade("out", "J.A.K.'s Screen Printer")
    Exit
    EndFunc

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

    Func maximize()
    GUISetState()
    fade("in", "J.A.K.'s Screen Printer")
    Opt("TrayIconHide", 1)
    EndFunc

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

    Func fade($dir, $title = $title)
    If $dir = "in" Then
    For $trans = 0 To 255
    WinSetTrans($title,"",$trans)
    $trans+=1
    WinSetTrans($title,"",$trans)
    $trans+=1
    WinSetTrans($title,"",$trans)
    $trans+=1
    WinSetTrans($title,"",$trans)
    Sleep(1)
    Next
    EndIf
    If $dir = "out" Then
    For $trans = 255 To 0 Step -1
    WinSetTrans($title,"",$trans)
    $trans-=1
    WinSetTrans($title,"",$trans)
    $trans-=1
    WinSetTrans($title,"",$trans)
    $trans-=1
    WinSetTrans($title,"",$trans)
    Sleep(1)
    Next
    EndIf
    EndFunc

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

    Func openfolder()
    _RunDOS('Explorer "' & $picdir & '"')
    EndFunc

    [/autoit]


    Sag bitte bescheid, wenn es klappt