从python调用自定义AutoIt函数

时间:2014-06-13 19:44:33

标签: python python-2.7 autoit

我找到了一种使用以下代码

从python运行内置auto函数的方法
from win32com.client import Dispatch
Auto = Dispatch("AutoItX3.Control")
Auto.Run("notepad.exe", "", 5)

是否有类似的方法来调用自定义方法,即my_AutoIt_File.au3中定义的方法 说我在这个文件中有一个方法

Func my_autoit_method
   ;some code
EndFunc

有没有办法从python调用此my_autoit_method

2 个答案:

答案 0 :(得分:1)

从帮助文件中:

AutoIt特定命令行开关

  • Form1:AutoIt3.exe [/ ErrorStdOut] [/ AutoIt3ExecuteScript]文件
    [params ...]

               Execute an AutoIt3 Script File
    

/ ErrorStdOut 允许将致命错误重定向到StdOut,应用程序可以将其作为Scite编辑器捕获。此开关可与编译脚本一起使用。

要执行标准的AutoIt脚本文件'myscript.au3',请使用以下命令: 'AutoIt3.exe myscript.au3'

  • Form2:Compiled.exe [/ ErrorStdOut] [params ...]

            Execute an compiled AutoIt3 Script File produced with Aut2Exe.
    
  • Form3:Compiled.exe [/ ErrorStdOut] [/ AutoIt3ExecuteScript文件] [params ...]

            Execute another script file from a compiled AutoIt3 Script File. Then you don't need to fileinstall another copy of AutoIT3.exe in your compiled file.
    
  • Form4:AutoIt3.exe [/ ErrorStdOut] / AutoIt3ExecuteLine“命令行”

            Execute one line of code.
    

要执行一行代码,请使用以下命令:

Run(@AutoItExe & ' /AutoIt3ExecuteLine  "MsgBox(0, ''Hello World!'', ''Hi!'')"')

答案 1 :(得分:1)

您必须向其他应用程序公开您的 AutoIt 功能。这可以通过 AutoItObject 轻松完成,它可以在 ROT 中register an object

AutoIt 代码将是:

#include <AutoItObject.au3>

$oObject = _AutoItObject_Create()
_AutoItObject_RegisterObject($oObject, 'MyVery.CustomApplication')
_AutoItObject_AddMethod($oObject, '_my_custom_function', '_my_custom_function')

While Sleep(100)
WEnd

Func _my_custom_function($oSelf)
    MsgBox(0, '', 'AutoIt says Hi')
    Exit
EndFunc

Python 代码应该是:

from win32com.client import Dispatch
Auto = Dispatch("MyVery.CustomApplication")
Auto._my_custom_function()