Der Screenshotter hier ist mit Auswahlfenster, deshalb ist hier die Genauigkeit recht gut.
>> Verbesserungsvorschläge erwünscht <<
Spoiler anzeigen
#include <Misc.au3>
#include <WindowsConstants.au3>
#include <ScreenCapture.au3>
$msg = MsgBox("262148", "Screenshotter", "Willst du einen Screenshot machen ?")
If $msg = 6 Then
_GiveReport("Ziehe mit der linken Maustaste einen Rahmen, um den Screenshot zu machen")
$pos = _MouseGetFrame("0x000000", 150)
_ScreenCapture_Capture(@DesktopDir & "\Screenshot(" & _GetNumber() & ").png", $pos[1], $pos[2], $pos[1] + $pos[3], $pos[2] + $pos[4], False)
While MsgBox("262148", "Screenshotter", "Willst du noch einen Screenshot machen ?") = 6
_GiveReport("Ziehe mit der linken Maustaste einen Rahmen, um den Screenshot zu machen")
$pos = _MouseGetFrame("0x000000", 150)
_ScreenCapture_Capture(@DesktopDir & "\Screenshot(" & _GetNumber() & ").png", $pos[1], $pos[2], $pos[1] + $pos[3], $pos[2] + $pos[4], False)
WEnd
EndIf
Func _GetNumber()
Local $search = 0
Do
$search += 1
Until Not FileExists(@DesktopDir & "\Screenshot(" & $search & ").png")
Return ($search)
EndFunc ;==>_GetNumber
Func _GiveReport($messgage)
Do
ToolTip($messgage)
Sleep(50)
Until _IsPressed("01")
ToolTip("")
EndFunc ;==>_GiveReport
Func _MouseGetFrame($color, $trans)
[/autoit] [autoit][/autoit] [autoit]Local $left, $top, $wight, $height, $statx, $staty, $return[5], $begin_box, $end_box
Local $frame = GUICreate("", 0, 0, 0, 0, $WS_POPUP, $WS_EX_TOOLWINDOW)
While 1
If _IsPressed("01") Then
$begin_box = MouseGetPos()
GUISetState(@SW_SHOW)
While 1
GUISetBkColor($color)
WinSetTrans($frame, "", $trans)
If MouseGetPos(0) > $begin_box[0] Then
$wight = MouseGetPos(0) - $begin_box[0]
$left = $begin_box[0]
$statx = 0
Else
$left = MouseGetPos(0)
$wight = $begin_box[0] - MouseGetPos(0)
$statx = 1
EndIf
If MouseGetPos(1) > $begin_box[1] Then
$height = MouseGetPos(1) - $begin_box[1]
$top = $begin_box[1]
$staty = 0
Else
$top = MouseGetPos(1)
$height = $begin_box[1] - MouseGetPos(1)
$staty = 1
EndIf
WinMove($frame, "", $left, $top, $wight, $height)
Sleep(20)
If Not _IsPressed("01") Then
$end_box = MouseGetPos()
GUIDelete($frame)
ExitLoop
EndIf
WEnd
ExitLoop
EndIf
Sleep(20)
WEnd
If $statx = 0 Then
$return[1] = $begin_box[0]
$return[3] = $end_box[0] - $begin_box[0]
Else
$return[1] = $end_box[0]
$return[3] = $begin_box[0] - $end_box[0]
EndIf
If $staty = 0 Then
$return[2] = $begin_box[1]
$return[4] = $end_box[1] - $begin_box[1]
Else
$return[2] = $end_box[1]
$return[4] = $begin_box[1] - $end_box[1]
EndIf
Return ($return)
EndFunc ;==>_MouseGetFrame