screenshot eines bestimmten bereiches

  • Ich suche quasi zum Bugfixing eine Möglichkeit, mir einen Screenshot von exakt dem Bereich zu machen, den ich später mit Pixelchecksum() prüfen will.

    Jetzt hab ich hier im Board schon eine screenshot.exe gefunden, dort habe ich aber nur die Möglichkeit, einen Screenshot von einem Bereich des gesamten Bildschirms zu machen, ich brauche das natürlich für das aktive Fenster. Gibt es da etwas?

  • nein, das gesamte Fenster ist ja mit der screenshot.exe kein Problem. Ich will einen bestimmten Bereich des aktiven Fesnters als Screenshot.

  • also in dem screenshot tool gibst ja die fkt mit _ispressed und die koords abfragen, wenn es immer die selbe auflösung ist bzw selbe fenstergröße dürfte das realisierbar sein damit

  • den Verdacht habe ich auch, nur wie? im Moment mache ich das so, das ich die Variablen left, top, width, height und capturefile manuell mit werten belege und dann rufe ich folgendes auf:

    Code
    DllCall("captdll.dll", "int", "CaptureRegion", "str", $CaptureDirectory & "\" & $CaptureFile, "int", $left, "int", $top, "int", $width, "int", $height, "int", $Quality)

    So, nun müsste man nur noch wissen, welchen Parameter ich abändern muss, damit der die Koordinaten nicht auf den Desktop bezieht sondern auf das aktive Fenster. Wenn ich das Fenster nämlich oben links in die Ecke des Bildschirms schiebe, dann nimmt der genau das auf, was ich will (nein..keine sehr komfortable Lösung ;) )

    • Offizieller Beitrag

    Hallo.

    Ist doch garkein problem, mit WinGetPos:

    Spoiler anzeigen
    [autoit]

    $CaptureDirectory =@ScriptDir
    $CaptureFile = "001.jpg"
    $pos = WinGetPos("")
    $left = $pos[0]
    $top = $pos[1]
    $width = $left+50; wieviel vom fenster
    $height = $top+50; wieviel vom fenster
    $Quality = 100
    DllCall("captdll.dll", "int", "CaptureRegion", "str", $CaptureDirectory & "\" & $CaptureFile, "int", $left, "int", $top, "int", $width, "int", $height, "int", $Quality)

    [/autoit]

    Mfg Spider

  • ahh...ok auch ein wenig um-die-ecke gelöst aber gut...kann man was mit anfagne. danke!

  • Zitat

    Original von gtaspider
    Hallo!

    inwiefern um die ecke? wingetpos("") liest die coordinaten des momentan aktiven fensters.. Naja, egal.. kein problem, dafür bin ich ja da ;)

    Mfg Spider

    Nicht um die Ecke wäre gewesen, wenn man einfach nen parameter a la "Pixelmode=relative" an den DLLCall hätte übergeben können.