如何从 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
}
}
我正在尝试构建一个在指定时间自动进入 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
}
}