【发布时间】:2015-10-29 10:11:53
【问题描述】:
我开始学习 C#,现在我想知道是否有一种方法可以在不窃取焦点的情况下启动第三方应用程序,或者始终在后台显示此应用程序/进程的窗口。
更具体地说:我编写了一个应用程序,它可以使用登录数据等参数启动 Steam 客户端。据我所知,Steam-Client 是用 Java 编写的,这可能是我的问题之一。我也知道你可以像这样在“静音模式”下启动 Steam 客户端:
"C:\Programs\Steam\Steam.exe" -silent -login user password
但如果我不想让 Steam 客户端窃取焦点,这将无济于事。前台出现了两个窗口:Login-Window和Loading-Window。
我在 stackoverflow 和谷歌上搜索了解决方案,但没有一个对我有用。一种可能的解决方案是,但对我不起作用:
Process startsteam = new Process();
startsteam.StartInfo.FileName = cursteampath;
startsteam.StartInfo.Arguments = "-silent -login " + user + " " + password;
startsteam.StartInfo.CreateNoWindow = true;
startsteam.StartInfo.ErrorDialog = false;
startsteam.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
startsteam.Start();
就像我之前写的那样,这不会隐藏 Login-Window(Form) 和 Loading-Window。我还注意到 Steam 正在启动像 steamwebhelper.exe 这样的子进程。
我的问题是:在 C# 中有什么方法可以启动第三方应用程序的进程并防止它及其子进程窃取焦点或只是强制所有窗口显示在背景?
编辑:这个解决方案也不适合我stackoverflow user32.dll
【问题讨论】:
标签: c# windows process focus steam