如何从 C# 控制台应用程序自动启动 Zoom 会议

How to start Zoom meeting automatically from C# Console Application

我正在尝试构建一个在指定时间自动进入 Zoom 会议的简单应用程序(作为控制台应用程序)。

应用程序使用 Process.Start 功能打开 Zoom 会议,然后等待“Zoom Meeting”进程启动。

如果我使用具有正确参数的 Windows 快捷方式文件(.lnk 扩展名),效果很好,like shown here

但是当我使用“常规”缩放 link(url)时它不起作用,因为它会打开浏览器并等待用户输入(它显示警报)。

我知道如何向进程发送输入,所以我只需要对打开的浏览器 window 的引用,但我找不到它。

Process.Start 没有 return 它,当我遍历所有进程时 (Process.GetProcesses) 我找不到任何我可以搜索的有用名称。

那么,我怎样才能得到浏览器进程的引用呢?或者至少在它启动时发送输入。

提前致谢。

=== 编辑 ===

在 Windows 注册表中挖掘之后,我找到了一个更简单的代码来实现它:

public static void OpenZoomMeeting(string link)
{
    string zoomDirectory = Environment.ExpandEnvironmentVariables(@"%APPDATA%\Zoom\bin");
    ProcessStartInfo startInfo = new ProcessStartInfo
    {
        FileName = $@"{zoomDirectory}\Zoom.exe",
        Arguments = $"--url={link}",
        WorkingDirectory = zoomDirectory
    };
    Process.Start(startInfo);
}

=== 旧代码 ===

感谢 jdweng

找到了解决方案

他说我应该用WebBrowser打开会议而不提示,所以我研究了一下。

因为我的应用程序是控制台应用程序,所以我不能只使用 WebBrowser,所以我找到了 That solution,它对我有用。

感谢您的帮助

===代码===

private void RunBrowserThread(string url) {
    var th = new Thread(() => {
        var br = new WebBrowser();
        br.DocumentCompleted += Browser_DocumentCompleted;
        br.Navigate(url);
        Application.Run();
    });
    th.SetApartmentState(ApartmentState.STA);
    th.Start();
}

void Browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
    var br = sender as WebBrowser;
    if (br.Url == e.Url) {
        Console.WriteLine("Natigated to {0}", e.Url);
        Application.ExitThread();   // Stops the thread
    }
}