C# 检查正在运行的HTA文件

C# 检查正在运行的HTA文件,c#,hta,C#,Hta,我正在与一些第三方软件集成,该软件在mshta.exe中运行一个.hta文件。我的应用程序是用C写的# 我需要检测.hta文件是否已经在运行,以便在开始向其发送消息之前启动它 在过去与其他第三方的集成中,我检查了进程列表中的exe,但我认为我不能只查找mshta.exe,因为它们可能正在运行其他.hta文件 我还尝试从process.getprocesss()中获取process.MainWindowTitle,但即使mshta.exe窗口显示了一个标题,MainWindowTitle属性也是空

我正在与一些第三方软件集成,该软件在mshta.exe中运行一个.hta文件。我的应用程序是用C写的#

我需要检测.hta文件是否已经在运行,以便在开始向其发送消息之前启动它

在过去与其他第三方的集成中,我检查了进程列表中的exe,但我认为我不能只查找mshta.exe,因为它们可能正在运行其他.hta文件

我还尝试从
process.getprocesss()
中获取
process.MainWindowTitle
,但即使mshta.exe窗口显示了一个标题,
MainWindowTitle
属性也是空的


有人知道一种方法可以让我知道mshta.exe正在运行一个特定的hta文件吗?

多亏了Teemu的评论,我发现
.hta
路径确实在命令行参数中。但是,此信息不在
进程
引用中(即使进程的
StartInfo
上有
参数
属性)。您必须像这样使用
managementobjectsearch

//Call this extension on the mshta.exe process to get the path of the .hta file
public static string GetCommandLine(this Process process) {
    var commandLine = new StringBuilder(process.MainModule.FileName);

    commandLine.Append(" ");
    using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT CommandLine FROM Win32_Process WHERE ProcessId = " + process.Id)) {
        foreach (var commandLinePart in searcher.Get()) {
            commandLine.Append(commandLinePart["CommandLine"]);
            commandLine.Append(" ");
        }
    }

    return commandLine.ToString();
}

检查每个mshta.exe的命令行,它应该包含运行hta的路径。你能发布你的hta的源代码吗?不幸的是,它是第三方hta文件,所以我不能共享它