1、新建C#项目,添加AutoIt的类库
2、添加类文件,添加using
类文件内容:见ClassAutoIt
3、将引入的类库属性响应更改
4、C#代码:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using audoit;
using System.Runtime.InteropServices;
using static System.Net.Mime.MediaTypeNames;
using System.Text.RegularExpressions;
using System.Runtime.InteropServices.ComTypes;
namespace CompileToExe
{
internal class Program
{
static void Main(string[] args)
{
GetValues getValues = new GetValues();
string filePath = "D:\\code\\Project\\lbv_automation_4.0_a\\ScriptLibs";
string[] files = getValues.GetFilePath(filePath); //所有au3文件的路径数组
string regexRules = "(?<=ScriptLibs\\\\).*?(?=.au3)";
string strFile = getValues.ArrayToString(files); //所有au3文件路径的字符串
string[] fileNames = getValues.GetStrArray(strFile, regexRules); //所有au3文件名
string windownTitle = "Aut2Exe - v3.3.16.1 (AutoIt Script to EXE Converter)";
getValues.CompileToExe(fileNames, windownTitle);
}
}
class GetValues
{
//传入路径,返回该文件夹下所有的 .au3 文件路径
public string[] GetFilePath(string path)
{
string[] files = Directory.GetFiles(path, "*.au3");
return files;
}
//数组转字符串
public string ArrayToString(string[] strArray)
{
StringBuilder str = new StringBuilder();
for (int i = 0; i < strArray.Length; i++)
{
if (i > 0)
{
str.Append(" ");
}
str.Append(strArray[i]);
}
return str.ToString();
}
//传入au3文件路径字符串和正则规则,返回所有的au3文件名
public string[] GetStrArray(string text, string regexRules)
{
//对text进行文本提取
MatchCollection matchs = Regex.Matches(text, @regexRules);
//MatchCollection转数组类型
string[] strArray = new string[matchs.Count];
for (int i = 0; i < matchs.Count; i++)
{
strArray[i] = matchs[i].Groups[0].Value;
}
return strArray;
}
//根据传入文件名和 Aut2Exe 窗口title,使用AutoIt将aue3文件编译成exe文件
public void CompileToExe(string[] fileNames, string windownTitle)
{
foreach (string file in fileNames)
{
AutoItX3Declarations.AU3_Send("#r", 0);
//执行窗口中的输入框中设置文本“Compile”
AutoItX3Declarations.AU3_ControlSetText("运行", "", "Edit1", "Compile");
AutoItX3Declarations.AU3_Sleep(1000);
//点击运行窗口中的确定按钮
AutoItX3Declarations.AU3_ControlClick("运行", "", "Button2", "left", 1, default, default);
//激活Aut2Exe窗口
AutoItX3Declarations.AU3_WinActivate(windownTitle, "");
AutoItX3Declarations.AU3_Sleep(1000);
//Au2Exe窗口中输入au3文件路径与exe文件保存路径
AutoItX3Declarations.AU3_ControlSetText(windownTitle, "", "Edit1", $"D:\\code\\Project\\lbv_automation_4.0_a\\ScriptLibs\\{file}.au3");
AutoItX3Declarations.AU3_ControlSetText(windownTitle, "", "Edit2", $"D:\\code\\Project\\exeFiles\\{file}.exe");
AutoItX3Declarations.AU3_Sleep(1000);
//点击 Convert 开始编译
AutoItX3Declarations.AU3_ControlClick(windownTitle, "", "Button10", "left", 1, default, default);
AutoItX3Declarations.AU3_Sleep(1000);
//点击编译已完成的“确认”提示框,关闭Aut2Exe
AutoItX3Declarations.AU3_ControlClick("Aut2Exe", "", "Button1", "left", 1, default, default);
AutoItX3Declarations.AU3_Sleep(1000);
AutoItX3Declarations.AU3_WinClose(windownTitle, "");
}
}
}
}