Automation 如何使用autoit识别拖动选择

Automation 如何使用autoit识别拖动选择,automation,autoit,Automation,Autoit,我正在用autoit编写一个自动化脚本:。在此过程中,我需要拍摄用户选择区域的屏幕截图 如何使用Autoit 3识别鼠标拖动选择操作?我基本上需要一些方法来获取所选矩形的坐标…来自Autoit论坛的rasim很好地用一个工作示例回答了我的这个问题: Autoit论坛的rasim非常友好地用一个工作示例回答了我的这个问题: 我认为它没有那个功能。不过,您可能可以找到另一个程序来执行此操作,并将其与Autoit接口。我认为Autoit没有此功能。不过,您可能可以找到另一个程序来执行此操作,并将其与A

我正在用autoit编写一个自动化脚本:。在此过程中,我需要拍摄用户选择区域的屏幕截图


如何使用Autoit 3识别鼠标拖动选择操作?我基本上需要一些方法来获取所选矩形的坐标…

来自Autoit论坛的rasim很好地用一个工作示例回答了我的这个问题:


Autoit论坛的rasim非常友好地用一个工作示例回答了我的这个问题:


我认为它没有那个功能。不过,您可能可以找到另一个程序来执行此操作,并将其与Autoit接口。我认为Autoit没有此功能。不过,您可能可以找到另一个程序来执行此操作,并将其与Autoit接口。
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#include <ScreenCapture.au3>

Global Const $WM_LBUTTONDOWN = 0x0201
Global $hDLL = DllOpen("User32.dll")

Global $Drag = False
Global $aCoord_Start
Global $aCoord_End
Global $iLeft, $iTop, $iRight, $iBottom
Global $sCapture = False

HotKeySet("{Esc}", "_Exit")

Global $pStub_MouseProc = DllCallbackRegister ("_Mouse_Handler", "int", "int;ptr;ptr")

Global $hHookMouse = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($pStub_MouseProc), _WinAPI_GetModuleHandle(0), 0)

While 1
    If $sCapture Then
        $sCapture = False
        _ScreenCapture_Capture(@ScriptDir & "\Capture.jpg", $iLeft, $iTop, $iRight, $iBottom)
    EndIf
    Sleep(100)
WEnd

Func _Mouse_Handler($nCode, $wParam, $lParam)
    If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHookMouse, $nCode, $wParam, $lParam)

    Switch $wParam
        Case $WM_LBUTTONDOWN
            $aCoord_Start = MouseGetPos()
        Case $WM_MOUSEMOVE
            If _IsPressed("01", $hDLL) Then $Drag = True
        Case $WM_LBUTTONUP
            $aCoord_End = MouseGetPos()

            If $Drag = True Then
                $Drag = False

                If $aCoord_Start[0] < $aCoord_End[0] Then
                    $iLeft = $aCoord_Start[0]
                    $iRight = $aCoord_End[0]
                Else
                    $iLeft = $aCoord_End[0]
                    $iRight = $aCoord_Start[0]
                EndIf

                If $aCoord_Start[1] < $aCoord_End[1] Then
                    $iTop = $aCoord_Start[1]
                    $iBottom = $aCoord_End[1]
                Else
                    $iTop = $aCoord_End[1]
                    $iBottom = $aCoord_Start[1]
                EndIf

                $sCapture = True
                Return 0
            EndIf
    EndSwitch

    Return _WinAPI_CallNextHookEx($hHookMouse, $nCode, $wParam, $lParam)
EndFunc

Func _Exit()
    DllCallbackFree($pStub_MouseProc)
    _WinAPI_UnhookWindowsHookEx($hHookMouse)
    DllClose($hDLL)

    Exit
EndFunc