如何使用C#调用AutoIt,批量将au3文件编译成exe可执行文件

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, "");
			}

		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啾啾景

她要拿打赏的币子去买山东土特产

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值