问题描述
我正在处理一个 C# .net 核心项目。我创建了一个进程来运行 "xdotool windowactivate $windowpid"。我应该存储在其上运行的进程的 windowID。解决方案可以是任何我找不到 xdotool 的属性,或者有没有办法在创建进程时获取它的 windowId?
另一个尝试是: 我用这种方法创建了我的页面。我试图获取进程的主窗口标题;由于单个进程,我无法获取标题。
static List<string> chromeTitles = new List<string>();
public static Process StartChrome(string filePath)
{
string dataDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"Chrome-UserData");
filePath += " --user-data-dir=" + dataDirectory;
var Chrome = new Process
{
StartInfo =
{
FileName = "C:/Program/chrome.exe",Arguments = filePath,UseShellExecute = false,CreateNowindow=true,WindowStyle = ProcessWindowStyle.Maximized,}
};
Chrome.Start();
string title = Chrome.MainWindowTitle;
chromeTitles.Add(title);
}
然后我称之为:
StartChrome("https://tr.wikipedia.org/wiki/Anasayfa");
Thread.Sleep(2000);
StartChrome("https://tureng.com/");
解决方法
您可以使用 Process 类来访问更多功能。
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.FileName = "xdotool.exe";
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.Arguments = $"windowactivate $windowpid";
process.StartInfo = startInfo;
process.Start();
要获取代码运行的进程的 PID,可以使用 Process.ID 属性:
process.Id;
如果要读取输出,可以添加以下代码:
string output = process.StandardOutput.ReadToEnd();
要获取输出,startInfo.RedirectStandardOutput 应为 True。