从命令行触发C#窗体中的操作

  • 本文关键字:操作 窗体 命令行 c# api
  • 更新时间 :
  • 英文 :


我已经做了一些搜索,但如果可能的话,我的问题的术语冲突会让我很难找到我要找的东西。

我想做的是运行一个windows窗体C#程序;听";对于外部命令,最好通过windows命令行以某种方式发送。

用例是我有一些自动化软件,我必须与一些测试设备软件一起运行。在测试的不同阶段,我需要在自动化软件中运行一个脚本(手动选择脚本并按下按钮(。但是,我可以在激发windows命令行命令的测试软件中包含序列中的步骤。目标是向我正在运行的C#应用程序发送一个命令,该命令将加载我的脚本,从而进一步自动化该过程。

虽然我可以简单地重写一个较小版本的自动化软件,该软件是单次运行使用的,并使用命令行参数,但有一点是,连接到某些硬件的自动化软件会比手动在自动化软件中工作花费更长的时间。

是否可以在C#中创建一个外部钩子?我不是在寻找完整的代码答案。我主要只需要这个功能的名称,这样我就可以查找并正确地学习它。

希望我已经说得足够清楚了。

编辑:作为额外的信息,我只能访问我的自动化软件的来源,而不能访问测试软件。我对测试软件的唯一选择是导出一个文件(我可能最终不得不轮询一个文件以了解自动化软件中的更改(,或者运行windows CMD命令。

您可以从Ian Kemp在评论中发布的链接中看到,在应用程序之间传递信息有多种方式。如果你正在寻找简单的东西,你可以使用Windows命令行在特定的文件夹中创建一个文本文件。然后,您的C#应用程序可以监视该文件夹中的新文件、读取内容、删除文件并执行所需的操作。

下面是一个从脚本创建文件的示例命令。我使用了文件名的日期和时间,试图使其独一无二。只要在创建文件之间有一个短暂的延迟,这应该是可以的。否则,您可能想用另一种方式命名文件,也许是递增数字?在我的系统中,日期和时间的格式为dd/MM/yyyy HH:MM:ss。此示例将前斜杠和冒号替换为短划线,以生成有效的文件名。您可能需要根据系统上的日期和时间格式对此进行调整。

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

然后在你的Win Forms C#应用程序中,你可以做这样的事情。您需要为FileSystemWatcher类添加using System.IO;

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();
}
}

最新更新