zoukankan      html  css  js  c++  java
  • AutoItX——独立出来的核心功能控件

    AutoItX——独立出来的核心功能控件

    AutoItX是AutoIt3提供的针对其它编程语言和开发环境的一个组件。该组件支持ActiveX/COM/DLL调用。因此,基于AutoIt3的这个feature,你完全可以摆脱其自带的开发环境,转而使用你擅长的编程环境通过调用AutoItX辅助完成自动化测试的任务。个人认为这是一个进步,更是广大工具粉丝的福音。

    下面是一个在C#使用AutoItX的简单示例。

    环境IDE:Visual Studio2010

    新建一个命令行工程(Consol Application Project),打开功能的引用面板,选择COM中的AutoItX3 Type Library。

    image

    在代码中使用AutoItX的命名空间:using AutoItX3Lib;

    然后New一个AutoItX3Class类的实例就可以调用诸如ControlClick之类的函数了。

    示例代码如下:

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using AutoItX3Lib;

    namespace AutoItXTest

    {

    class Program

    {

    static void Main(string[] args)

    {

    AutoItX3Lib.AutoItX3Class ai = new AutoItX3Class();

    ai.Run(@"calc.exe");

    ai.WinActivate("[CLASS:SciCalc]");

    ai.ControlClick("", "", "[ID:125]");

    }

    }

    }

    AutoItX3Class类的成员在对象浏览器(Object Browser)中查看如下,从这里可以看到AutoItX公开了那些方法。

    image

    还可以通过P/Invoke的方式在托管代码中是使用其中的静态方法,展示如下,注意DllImport的AutoItX.dll还有一个64位的版本,它们分别是:

    C:\Program Files\AutoIt3\AutoItX\AutoItX3.dll或者64位上的版本——

    C:\Program Files\AutoIt3\AutoItX\AutoItX3_x64.dll

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Runtime.InteropServices;

    namespace AutoItXTest

    {

    class Program

    {

    public const int SW_SHOW = 6;

    public const int SW_SHOWDEFAULT = 7;

    public const int SW_SHOWMAXIMIZED = 8;

    public const int SW_SHOWMINIMIZED = 9;

    [DllImport("AutoItX3.dll", SetLastError = true, CharSet = CharSet.Auto)]

    static public extern int AU3_ControlClick([MarshalAs(UnmanagedType.LPWStr)] string Title

    , [MarshalAs(UnmanagedType.LPWStr)] string Text, [MarshalAs(UnmanagedType.LPWStr)] string Control

    , [MarshalAs(UnmanagedType.LPWStr)] string Button, int NumClicks, int X, int Y);

    [DllImport("AutoItX3.dll", SetLastError = true, CharSet = CharSet.Auto)]

    static public extern int AU3_Run([MarshalAs(UnmanagedType.LPWStr)]string Run

    , [MarshalAs(UnmanagedType.LPWStr)]string Dir, int ShowFlags);

    [DllImport("AutoItX3.dll", SetLastError = true, CharSet = CharSet.Auto)]

    static public extern void AU3_WinActivate([MarshalAs(UnmanagedType.LPWStr)]string Title

    , [MarshalAs(UnmanagedType.LPWStr)]string Text);

    [DllImport("AutoItX3.dll", SetLastError = true, CharSet = CharSet.Auto)]

    static public extern void AU3_Sleep(int Milliseconds);

    static void Main(string[] args)

    {

    AU3_Run("calc.exe", "", SW_SHOWMAXIMIZED);

    AU3_WinActivate("[CLASS:SciCalc]", "");

    AU3_Sleep(2000);

    AU3_ControlClick("", "", "[ID:125]", "", 1, 0, 0);

    AU3_ControlClick("", "", "[ID:125]", "", 1, 0, 0);

    AU3_ControlClick("", "", "[ID:125]", "", 1, 0, 0);

    }

    啃一下代码:

    唯一需要交代就是DllImport的静态方法列表可以通过AutoItX帮助文档找到,这里不再赘述。

    在VBScript中将以创建COM对象的方式使用AutoItX的功能,如下是一段代码演示:

    Set oShell = WScript.CreateObject("WScript.Shell")

    Set oAutoIt = WScript.CreateObject("AutoItX3.Control")

    oShell.Run "calc.exe", 1, FALSE

    oAutoIt.WinWaitActive "[CLASS:SciCalc]", ""

    oAutoIt.Send "1{+}1="

    那么到底AutoItX提供了哪些COM对象可供使用呢,还是要参见AutoItX帮助文档,这里仅仅列出目录:

    image

  • 相关阅读:
    每天拿出来2小时浪费(文/王路) 作者: 王路
    objective-c自学总结(二)---init/set/get方法
    objective-c自学总结(一)---面向对象
    水仙花数
    独木舟上的旅行
    阶乘之和
    小明的调查统计
    管闲事的小明
    重温《STL源码剖析》笔记 第一章
    重温《STL源码剖析》笔记 第三章
  • 原文地址:https://www.cnblogs.com/dancewithautomation/p/2320770.html
Copyright © 2011-2022 走看看