我想打开一个隐藏的Internet Explorer窗口而不会窃取焦点。我有一个Timer对象,每5分钟打开一次Internet Explorer,检查网站是否有更新。问题是每次检查更新时,都会从前台的当前应用程序中窃取焦点。以下是我开始这个过程的方法:
Process m_Proc = new Process();
m_Proc.StartInfo.Arguments = String.Format("{0}{1}", "-nomerge ", browserURL);
m_Proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
m_Proc.StartInfo.UseShellExecute = true;
m_Proc.StartInfo.CreateNoWindow = true;
m_Proc.StartInfo.FileName = String.Format("iexplore.exe");
m_Proc.Start();
即使它被隐藏,也总是会抢断焦点。我希望它从没有发生任何事情开始,因此用户可以继续处理他们正在做的事情。感谢。
答案 0 :(得分:1)
尝试通过其COM接口自动化Internet Explorer,而不是显式创建进程。 Here's how可以做到。只是不要ie.Visible = true
,它将保持隐藏状态。完成后请致电ie.Quit()
。
答案 1 :(得分:0)
我甚至不确定为什么要打开浏览器来执行此操作,让代码以另一种方式检查网站会不会更容易?也许这样的事情。
string url = "http://www.google.com";
string result = null;
try
{
WebClient client = new WebClient();
result = client.DownloadString(url);
//Store this result and compare it to last stored result for changes.
}
catch (Exception ex)
{
// handle error
MessageBox.Show(ex.Message);
}
我的C#生锈了,所以你需要仔细检查一下。