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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM