簡體   English   中英

從命令行觸發 C# windows 表單中的操作?

[英]Trigger an action in C# windows form from command line?

我已經為我的問題進行了一些搜索,但相互矛盾的術語使我很難找到我正在尋找的東西,如果它甚至可能的話。

我想做的是從 C# 程序運行 windows 程序並讓它“監聽”外部命令,理想情況下通過 windows 命令行以某種方式發送。

用例是我有一些自動化軟件,我必須與一些測試設備軟件一起運行。 在我測試的不同階段,我需要在我的自動化軟件中運行一個腳本(手動選擇腳本並按下一個按鈕)。 但是,我可以在觸發 windows 命令行命令的測試軟件中包含我的序列中的步驟。 目標是向我正在運行的 C# 應用程序發送一個命令,該應用程序將加載我的腳本,進一步自動化該過程。

雖然我可以簡單地重寫我的自動化軟件的較小版本,它是單次運行使用並使用命令行 arguments,但有一堆前導碼表明,連接到某些硬件的自動化軟件會使該過程花費更長的時間而不是手動在自動化軟件中工作。

是否可以在 C# 中創建外部掛鈎? 我不是在尋找完整的代碼答案。 我主要只需要此功能的名稱,以便我可以查找並正確學習它。

希望我已經說得夠清楚了。

編輯:作為額外的信息,我只能訪問我的自動化軟件的源代碼,而不是測試軟件。 我對測試軟件的唯一選擇是導出文件(我可能最終不得不輪詢文件以了解自動化軟件中的更改),或者運行 windows CMD 命令。

從 Ian Kemp 在評論中發布的鏈接中可以看出,應用程序之間傳遞信息的方式有多種。 如果您正在尋找簡單的東西,您可以使用 Windows 命令行在特定文件夾中創建文本文件。 然后,您的 C# 應用程序可以監視該文件夾中的新文件、讀取內容、刪除文件並執行所需的操作。

這是從腳本創建文件的示例命令。 我已使用文件名的日期和時間來嘗試使其唯一。 只要創建文件之間有短暫的延遲,這應該沒問題。 否則,您可能想以另一種方式命名文件,也許是遞增數字? 在我的系統上,日期和時間的格式為 dd/MM/yyyy HH:mm:ss。 此示例將正斜杠和冒號替換為破折號以生成有效的文件名。 您可能需要根據系統上的日期和時間格式進行調整。

echo some command > C:\SomeFolder\%date:/=-%-%time::=-%.txt

然后在你的 Win Forms C# 應用程序中你可以做這樣的事情。 您需要using System.IO; 對於FileSystemWatcher class。

private void Form1_Load(object sender, EventArgs e)
{
    FileSystemWatcher fileWatcher = new FileSystemWatcher()
    {
        Path = @".\", // Path of the directory you want to monitor
        Filter = "*.txt", // Filter for the file names
        NotifyFilter = NotifyFilters.LastWrite, // Raise an event when the write time of a file changes
        EnableRaisingEvents = true
    };
    fileWatcher.Changed += FileWatcher_Changed; // Subscribe to the file changed event
}

private void FileWatcher_Changed(object sender, FileSystemEventArgs e)
{
    // Read the contents of the file and delete it
    string command = File.ReadAllText(e.FullPath).Trim(); // ReadAllText() may not be the best option, but it's just an example
    File.Delete(e.FullPath);

    // Check the contents of the file and decide what to do
    if (command == "some command")
    {
        DoSomething();
    } 
    else if (command == "something else")
    }
        DoSomethingElse();
    }
}

暫無
暫無

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

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