Automation 任务自动化

Automation 任务自动化,automation,autoit,myob,Automation,Autoit,Myob,是否有任何工具可以自动从MYOB(AccountRightPlus)导出所有报告? 我尝试过AutoIt和Sikuli,但似乎忽略了鼠标点击(和键盘发送/键入命令)。可能吗? 下面是我正在使用的AutoIt脚本: #include <ImageSearch.au3> #include <WinAPI.au3> #include <Constants.au3> $x1=0 $y1=0 WinActivate("Ac

是否有任何工具可以自动从MYOB(AccountRightPlus)导出所有报告? 我尝试过AutoIt和Sikuli,但似乎忽略了鼠标点击(和键盘发送/键入命令)。可能吗? 下面是我正在使用的AutoIt脚本:

    #include <ImageSearch.au3>
    #include <WinAPI.au3>
    #include <Constants.au3>
    $x1=0
    $y1=0
    WinActivate("AccountRight Plus")
    Sleep(200)
    $result = _ImageSearch("Accounts.bmp",1,$x1,$y1,0)
    if $result=1 Then
        MouseMove($x1,$y1,3)
        MouseClick("left")
        Sleep(1000)
        MouseClick("left")
        $aMouse = MouseGetPos() ; Remembers current mouse position
        ConsoleWrite("Mouse Clicked at " & $aMouse[0] & "," & $aMouse[1] & @LF)
        Sleep(500)
        ;Try with Handle
        Local $handle = WinGetHandle("AccountRight Plus")
        If @error Then
            MsgBox(4096, "Error", "Could not find the correct window")
        Else
            ConsoleWrite("$handle = " & $handle & @LF)
            ControlSend($handle, "", "", "^i")
        EndIf
        Sleep(1000)
        ;try winAPI
        ;MsgBox(0, "Info", "Moving mouse")
        _WinAPI_Mouse_Event($MOUSEEVENTF_MOVE, 653, 454)
        _WinAPI_Mouse_Event($MOUSEEVENTF_LEFTDOWN)
        Sleep(500)
        _WinAPI_Mouse_Event($MOUSEEVENTF_LEFTUP)
        ; try Control Click
        $controResult=ControlClick("ABC - Command Centre",20806,"left",2,62,106)
        ConsoleWrite("controlResult = " & $controResult & @LF)
        Sleep(1000)
        ; try ControSend to inner frame
        $controResult=ControlSend("AccountRight Plus","ABC- Command Centre",20806,"{TAB}")
        ConsoleWrite("controlResult = " & $controResult & @LF)
        Sleep(1000)
        ; try ControSend to outer frame
        $controResult=ControlSend("AccountRight Plus","","","{ALT}")
        ConsoleWrite("controlResult = " & $controResult & @LF)
        Sleep(1000)
        ; try with CLASS
        $controResult=ControlSend("AccountRight Plus","","[CLASS:MDIClient; INSTANCE:1]","{TAB}")
        ConsoleWrite("controlResult = " & $controResult & @LF)
        Sleep(1000)
        ; try send
        Send("{TAB}")
        Sleep(1000)
        Send("{TAB}")
        Sleep(1000)
        ;try MenuSelect
        WinMenuSelectItem("AccountRight Plus", "", "&File")
        Sleep(1000)
        MsgBox(0,"Found","picture found.")
            EndIf
#包括
#包括
#包括
$x1=0
$y1=0
WinActivate(“AccountRight Plus”)
睡眠(200)
$result=_ImageSearch(“Accounts.bmp”,1,$x1,$y1,0)
如果$result=1,则
鼠标移动($x1,$y1,3)
鼠标点击(“左”)
睡眠(1000)
鼠标点击(“左”)
$aMouse=MouseGetPos();记住当前鼠标位置
ConsoleWrite(“鼠标点击“&$aMouse[0]&”、“&$aMouse[1]&@LF”)
睡眠(500)
;试试把手
本地$handle=wingthandle(“AccountRight Plus”)
如果@error那么
MsgBox(4096,“错误”,“找不到正确的窗口”)
其他的
控制台写入(“$handle=“&$handle&@LF”)
ControlSend($handle,“,”,“^i”)
恩迪夫
睡眠(1000)
;试试winAPI
;MsgBox(0,“信息”,“移动鼠标”)
_WinAPI_鼠标事件($MOUSEEVENTF_MOVE,653454)
_WinAPI_鼠标事件($MOUSEEVENTF_LEFTDOWN)
睡眠(500)
_WinAPI_鼠标事件($MOUSEEVENTF_LEFTUP)
; 尝试控制单击
$controResult=CONTROLICK(“ABC-指挥中心”,20806,“左”,2,62106)
控制台写入(“controlResult=“&$ControrResult&@LF)
睡眠(1000)
; 尝试将控制键移到内部框架
$controResult=ControlSend(“AccountRightPlus”,“ABC-指挥中心”,20806,“{TAB}”)
控制台写入(“controlResult=“&$ControrResult&@LF)
睡眠(1000)
; 试着控制外框
$controResult=ControlSend(“accountRightplus”、“”、“”、“{ALT}”)
控制台写入(“controlResult=“&$ControrResult&@LF)
睡眠(1000)
; 试一试
$controResult=ControlSend(“AccountRightPlus”,”,“[CLASS:MDIClient;实例:1],“{TAB}”)
控制台写入(“controlResult=“&$ControrResult&@LF)
睡眠(1000)
; 尝试发送
发送(“{TAB}”)
睡眠(1000)
发送(“{TAB}”)
睡眠(1000)
;试试菜单选择
WinMenuSelectItem(“AccountRightPlus”、“文件”、“文件”)
睡眠(1000)
MsgBox(0,“找到”,“找到图片”)
恩迪夫
Nushi

您是否尝试在应用程序中直接使用扫描代码

这里有一个例子。它在当前位置单击鼠标,然后发送一个{Tab}。您需要根据自己的需要更改此设置。您可以先使用“MouseMove,150250”将鼠标移动到正确的位置。这些是X、Y位置

F8:: ; Press F8 to start macro
Send, {vk01} ; Click left mouse button
;Send, {scYYY} ; 
Send, {vk09sc00F} ; Send the Vk and SC codes for the {Tab} key.
Return

让我知道这是否有效

到目前为止您做了什么以及如何做?我很惊讶,因为AutoIt(像autoHotKey)就像用户一样模拟击键和鼠标单击。此应用程序是基于web的还是下载的?在执行命令之前,是否检查右窗口是否打开。您是基于x-y坐标还是基于按钮ID执行鼠标命令(如果x-y坐标是位于同一位置的按钮,还是搜索按钮图像)。您是在两个命令之间留出时间(sleep,xx)还是只在一次大动作中执行?谢谢。MYOB是一个旧的桌面应用程序。我可以把它的重点,但所有按键发送使用AutoIt被忽略。我尝试了AHK和WSH,但得到了相同的结果(没有)。我确实在命令之间使用睡眠。我将用我正在使用的脚本更新问题。再次感谢您阅读本说明:似乎旧的MYOB程序正在直接读取低级键盘扫描码,因此忽略了autoHotKey之类的程序。我还没有检查您的代码,但有一件事情似乎很奇怪:Send({TAB}),我期待Send,{TAB}。有一个问题,你有没有AHK可以发送给MYOB的按键或鼠标动作?如果到目前为止没有任何效果,那么你应该专注于获得一个有效的发送和一个有效的鼠标单击,然后从那里开始工作。谢谢!。我尝试了简单的发送AHK,但没有成功。该脚本使MYOB成为焦点,但随后al send命令被忽略。我还在上面提到的线程中尝试了这两个脚本。你能告诉我使用VK或SC代码是否解决了你的问题吗?不幸的是,这似乎不起作用。。。原因可能是什么?非常感谢你的帮助!Nushi,我创建了一个只有两个动作的脚本,一个鼠标和一个键盘。如果您注释掉制表符行(4),将鼠标放在MYOB按钮上,然后按F8,什么也不会发生?或者,如果您在一个可以来回进行制表的区域内注释掉鼠标点击线(2)并使用制表符线,则也不会发生任何事情?正确。在这两种情况下不会发生任何事情。到目前为止,我唯一能做的就是激活(聚焦)窗口,找到一个图像(使用AutoIt)并移动鼠标(使用AutoIt但并不总是有效)。再次感谢你,Nushi