我有一个 WPF 应用程序,它将像桌面一样运行,具有某些可用的应用程序,例如 Microsoft Edge 浏览器。我可以打开它的多个窗口,向自定义任务栏添加一个按钮,但问题是,你可以按名称找到进程,但是按钮/程序不知道要打开哪个正确的窗口。如果我按 ID 搜索,VS 会给我:
System.ArgumentException:'Process with an Id of #### is not running'
由于 Microsoft 它自己更改了它开头的初始 ID 的 ID。
因此,我现在用于尝试获取正确窗口的方法是:
public void NewTabClick(object sender, RoutedEventArgs e)
{
//NewTabClick is a click event that gets created with every new button
MessageBox.Show("NewTabClicked");
ShowWindow(GetWindowHandle(), 3);
}
private IntPtr GetWindowHandle()
{
try
{
//Here is where i get the exception error
return Process.GetProcessById(ProcessId).MainWindowHandle;
}
catch (NullReferenceException)
{
return IntPtr.Zero;
}
}
当我们以这样的另一种方法启动应用程序本身时,就会设置 ProcessId
private void StartApp()
{
var process = Process.Start(ProgramPath);
SetProcessId(process);
}
private void SetProcessId(Process process)
{
ProcessId = process.Id;
}
有没有办法跟踪/更改/更新它应该查找的 ID,或者有另一种方法来跟踪这些窗口/浏览器?
提前致谢!