gpt4 book ai didi

c# - 为什么我编译的 AutoIt 脚本在从 C# 调用时无法返回?

转载 作者:太空宇宙 更新时间:2023-11-03 15:09:20 24 4
gpt4 key购买 nike

我编译的 AutoIt 脚本本身运行良好,但当从 C# 调用时,它会运行但不会完成执行。我编译的 C# 代码:

Process myExe = new Process();
Environment.CurrentDirectory = Path.GetDirectoryName(exeDir); //exeDir is full path of the AutoIt executable directory
ProcessStartInfo StartInfo = new ProcessStartInfo("");
StartInfo.FileName = exeFile; //exeFile is full path of the executable itself
StartInfo.Verb = "runas";
myExe = Process.Start(StartInfo);

它在 AutoIt 代码中的 EnvUpdate() 处停止,并最终在其他一些函数上再次停止。如果我手动运行可执行文件,这一切都不会发生。

我从运行此可执行文件的 C# 启动了一个批处理文件。以及 CreateNoWindowUseShellExecute 的组合。也没有成功:1) 以管理员身份运行 C# 编译的可执行文件。2) 使用 StartInfo.CreateNoWindowStartInfo.UseShellExecute 的组合。3) 从批处理文件运行 AutoIt 可执行文件。4) 通过批处理文件从 Perl 文件运行 AutoIt 可执行文件。5) 从 Windows 计划任务运行 AutoIt 可执行文件。6) 在没有 ProcessStartInfo 的情况下运行 AutoIt 可执行文件,使用:

myExe = Process.Start("cmd.exe", "/c start /wait " + exeFile);

myExe = Process.Start(exeFile);

最佳答案

这里有一个示例 C# 类,用于使用 .WaitForExit() 对已编译的 AutoIt 脚本(EXE 文件)进行外部调用,这应该是您的问题:

using System.Configuration;
using System.Diagnostics;

namespace RegressionTesting.Common.ThirdParty
{
public class ClickAtBrowserPosition
{
public static void CallClickAtBrowserPosition(string currentBrowserWindowTitle, int xPosition, int yPosition)
{
var pathClickAtBrowserPosition = ConfigurationManager.AppSettings["pathClickAtBrowserPosition"];
var clickAtBrowserPositionExe = ConfigurationManager.AppSettings["clickAtBrowserPositionExe"];

var process = new Process();
var startInfo = new ProcessStartInfo
{
WindowStyle = ProcessWindowStyle.Hidden, // don't show the cmd.exe which calls the program
FileName = "cmd.exe",
Arguments = @" /C cd " +
$@"""{pathClickAtBrowserPosition}"" && {clickAtBrowserPositionExe} ""{currentBrowserWindowTitle}"" {xPosition} {yPosition}"
};

process.StartInfo = startInfo;
process.Start();
process.WaitForExit(); // wait to finish the execution
}
}
}

编译后的 AutoIt 脚本用于单击窗口(在本例中为浏览器)的相对位置。

关于c# - 为什么我编译的 AutoIt 脚本在从 C# 调用时无法返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41882012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com