簡體   English   中英

C#從資源運行命令提示符

[英]C# Run command prompt from resources

我有一個需要通過創建命令提示符來運行的文件。 基本上是這樣的:

該文件的名稱為UArtCMD.exe,我通過在目錄中打開命令提示符並運行已編程到其中的命令來使用它,例如“ uartcmd a”。 我想做的是從外部向該軟件添加GUI,例如,當在GUI上按下按鈕時,它將使用命令提示符運行命令。

我設法使它在我的計算機上運行沒有任何障礙,但是當我在另一台計算機上安裝該軟件時,就會出現問題。 由於UArtCMD是外部軟件,因此不會在每台計算機上使用,因此我嘗試做的是將其添加到項目的資源中並從那里運行它,問題是我不知道該怎么做。

這是我的代碼,用於在具有UArtCMD的計算機上運行命令提示符

public static string executeLine(string command)
    {
        string result;
        try
        {
            Process process = Process.Start(new ProcessStartInfo("cmd.exe", "/c " + command)
            {
                CreateNoWindow = true,
                UseShellExecute = false,
                WorkingDirectory = "C:\\UArtCMD",
                RedirectStandardError = true,
                RedirectStandardOutput = true
            });
            process.WaitForExit();
            string text = process.StandardOutput.ReadToEnd();
            process.Close();
            MainWindow.log(text);
            result = text;
        }
        catch (Exception ex)
        {
            result = ex.StackTrace;
        }
        return result;
    }

提前致謝!

如果您需要我添加任何信息或進一步擴展問題,請讓我知道我會很樂意這樣做。

  1. 在解決方案中包括對文件UArtCMD.exe的引用(可以在解決方案結構中的任何位置)。
  2. 將其“復制到輸出目錄”屬性設置為“始終”。
  3. 將您的流程的“ WorkingDirectory”屬性設置為“ Environment.CurrentDirectory”。

現在,UArtCMD.exe應該總是找到它進入bin目錄的方式(即使它是由構建代理程序構建到一個奇怪的輸出目錄中的),並且代碼將知道在與代碼運行源相同的目錄中查找它。

編輯:關於從流程對象中刪除“ WorkingDirectory”屬性的注釋是有效的,您可以這樣做,而不是將其設置為“ Environment.CurrentDirectory”,它們都可以執行相同的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM