Bildschirmauschnittscreenshot - Rahmen ziehen mit Maus - Wie?

  • Abend an alle,

    hab nen Problem:
    Folgendes, jeder kennt wahrscheinlich Tools wie Hradcpoy, bei denen alle paar Mal Screenshot machen die Meldung kommt, ja Trinkgeld blablabla usw. Diese Meldung nervt mich mittlerweile, deswegen hab ich mir überlegt, mhmm, kann doch nicht so schwierig sein und siehe in der Tat es geht:
    Hab jetzt ein Script, dass wenn man DRUCK drückt einen den Bereich auswählen lässt den man haben will (Aktives Fenster und kompletten Screen brauch ich nie ;) ) und diesen dann als JPEG mit bester Quali abspeichert.
    Bei diesem per Maus auswählen, will ich, dass da etwas wie ein Rahmen um den momentanen Bereich angezeigt wird, am besten farblich gut kenntlich (rosa?? :D ). Sowas wie bei Windows wenn man etwas markiert, da ist ja auch so ein Rahmen. WIe geht das?

    Skript ist im Spoiler.
    (fortlaufende Zahlen für geschossene Bilder, Gui etc. kommt alles noch sobald ich Zeit habe *grins*)
    Danke schonmal fürs Skript lesen und helfen.

    Gruß und einen schönen Abend noch bzw. gute Nacht (bin hundemüde)

    Stormy

    Spoiler anzeigen
    [autoit]

    Opt("TrayIconDebug",1)
    ;~ #NoTrayIcon
    #include <Screencapture.au3>
    Opt("MouseCoordMode",1)

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

    ;diverse Einstellungen:
    HotKeySet("{PRINTSCREEN}","_screen")
    $cursor = True ;ich mags mit ;)
    $verz = "D:\Eigene Dateien\Eigene Bilder\selfhc\"
    $filename = "pic#00.jpeg"

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

    While 1
    sleep(150)
    WEnd

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

    Func _screen() ;bestimmter Bereich als JPEG mit Quali 100 abspeichern
    $dll = DllOpen("user32.dll")

    ;während linke Maustaste gedrückt
    ;bestimmt Startpunkt
    While 1
    If _IsPressed("01",$dll) Then
    $p1 = MouseGetPos()
    ExitLoop
    EndIf
    WEnd

    While 1
    sleep(150) ;ganz wichtig ist natürlich schlafen ;)
    $p2 = MouseGetPos()

    If $p1[0] > $p2[0] Then
    $width = $p1[0] - $p2[0] ;für Rahmen
    $right = $p1[0] ;für screencapture
    $left = $p2[0] ;für screencapture & Rahmen
    Else
    $width = $p2[0] - $p1[0]
    $right = $p2[0] ;für screencapture
    $left = $p1[0] ;für screencapture & Rahmen
    EndIf

    If $p1[1] > $p2[1] Then
    $height = $p1[1] - $p2[1] ;für Rahmen
    $bottom = $p1[1] ;für screencapture
    $top = $p2[1] ;für screencapture & Rahmen
    Else
    $height = $p2[1] - $p1[1] ;für Rahmen
    $bottom = $p2[1] ;für screencapture
    $top = $p1[1] ;für screencapture & Rahmen
    EndIf

    ;hier noch was reinbauen, das mir ein Rechteck, eine Markierung sprich einen Rahmen
    ;um den momentanen ausgewählten Bereich gibt, so wie wenn ihr halt mir Windows was markiert
    ;dieser Rahmen mit den Punkten

    ;sobald losgelassen...
    If Not _IsPressed("01",$dll) Then ExitLoop
    WEnd

    DllClose($dll)
    _ScreenCapture_Capture($verz & $filename,$left,$top,$right,$bottom,$cursor)
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von stormy (12. April 2008 um 09:57)

    • Offizieller Beitrag

    Hallo,

    kennst Du diesen Beitrag schon -> Screenshot.exe

  • Das Thema schon, aber den Post noch nicht :)
    Beiß mir grad in den Arsch, hätte ich einfach weitergelesen anstatt festzustellen, dass im ganz oberen Quellcode nichts zum Markieren ist, dann hätte ich den Thread gar nicht aufmachen müssen... :| :|
    Danke !! Ich gelobe Besserung. :D :D Bin dann mal am verwursteln mit meinem Skript :)

    Gruß Stormy