如何将此C#代码转换为批处理文件代码

本文关键字:代码 转换 批处理文件 | 更新日期: 2023-09-27 17:57:38

我读到Win32不允许远程调用交互式进程,我怀疑控制台应用程序被认为是Windows交互式的,因此,如果我可以将以下代码转换为批处理文件,那么我希望我可以从客户端在服务器计算机上远程运行批处理文件。如果我错了,请随意纠正这个逻辑。

代码为:

namespace PRIMEWebFlyControl
{
  class Program
  {
    // name of the process we will retrieve a handle to
    private const string PROCESS_NAME = "PRIMEPipeLine";
    private static Process ProgramHandle;
    private static string command;
    static void Main(string[] args)
    {
        //Console.WriteLine("This program has been launched remotely!");
        TextReader tr = new StreamReader("C:''inetpub''wwwroot''PRIMEWeb''Executables''FlyCommand.txt");
        command = tr.ReadLine();
        tr.Close();
        ExecuteCommand();
    }
    [DllImport("user32.dll")]
    static extern bool SetForegroundWindow(IntPtr handle);
    private static void ExecuteCommand() {
        if (AssignProcessHandle()) {
            IntPtr p = ProgramHandle.MainWindowHandle;
            SetForegroundWindow(p);
            SendKeys.SendWait(command + "~"); // "~" is equivalent to pressing Enter
        }
    }

    private static bool AssignProcessHandle()
    {
        // ask the system for all processes that match the name we are looking for
        Process[] matchingProcesses = Process.GetProcessesByName(PROCESS_NAME);
        // if none are returned then we haven't found the program so return false;
        if (matchingProcesses.Length == 0) return false;
        // else, set our reference to the running program
        ProgramHandle = matchingProcesses[0];
        // return true to indicate we have assigned the ref sucessfully
        return true;
    }
}
}

正如您将注意到的那样,代码包含Windows库方法(如SetForegroundWindow())的方法调用,并且由于我不熟悉批处理文件,我想知道如何实现同样的功能。

非常感谢

如何将此C#代码转换为批处理文件代码

如果我理解得很好,您正在寻找一个命令行,它将执行名为(C:''inetpub''wwwroot''PRIMEWeb''Executables''FlyCommand.txt)的文本文件中的一组命令

以下是您需要做的:

cmd < C:'inetpub'wwwroot'PRIMEWeb'Executables'FlyCommand.txt

如果路径包含空格,请使用以下命令:

cmd < "C:'inetpub'wwwroot'PRIMEWeb'Executables'FlyCommand.txt"