首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否从命令行触发C# windows窗体中的操作?

是否从命令行触发C# windows窗体中的操作?
EN

Stack Overflow用户
提问于 2020-08-21 04:34:14
回答 1查看 102关注 0票数 0

我已经做了一些搜索,但我的问题的术语冲突使我很难找到我正在寻找的东西,如果这是可能的话。

我想要做的是运行一个windows form C#程序,让它“监听”外部命令,最好是通过windows命令行发送。

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

虽然我可以简单地重写我的自动化软件的一个较小的版本,它是单运行使用的,并使用命令行参数,但有一堆前置代码,即连接到某些硬件的自动化软件将使过程比手动在自动化软件中工作花费更长的时间。

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-21 07:13:37

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

下面是一个从脚本创建文件的命令示例。我使用日期和时间作为文件名,以使其具有唯一性。只要在创建文件之间有一个很短的延迟,这就应该没问题。否则,您可能想要以另一种方式命名文件,例如递增数字?在我的系统上,日期和时间的格式为dd/MM/yyyy HH:mm:ss。此示例将正斜杠和冒号替换为短划线,以生成有效的文件名。您可能需要根据系统上的日期和时间格式对其进行调整。

代码语言:javascript
复制
echo some command > C:\SomeFolder\%date:/=-%-%time::=-%.txt

然后,在您的Win Forms C#应用程序中,您可以执行以下操作。您需要为FileSystemWatcher类添加using System.IO;

代码语言:javascript
复制
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();
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63512777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档