Открывать скрытое окно Internet Explorer без получения Фокуса?
Я хочу открыть скрытое окно Internet Explorer без кражи фокуса. У меня есть объект Timer, который открывает Internet Explorer каждые 5 минут, чтобы проверить веб-сайт на наличие обновлений. Проблема в том, что каждый раз, когда он проверяет наличие обновлений, он крадет фокус у текущего приложения на переднем плане. Ниже показано, как я запускаю процесс:
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();
Он всегда крадет фокус, даже когда он скрыт. Я хочу, чтобы это началось, как будто ничего не происходит, чтобы пользователи могли продолжать работать над тем, что они делают. Благодарю.
2 ответа
Попробуйте автоматизировать Internet Explorer через его COM-интерфейсы, а не создавать процесс явно. Вот как это можно сделать. Просто не делай ie.Visible = true
и это останется скрытым. Вызов ie.Quit()
когда закончите с этим.
Я даже не уверен, зачем вы открываете браузер для этого, не будет ли проще, если ваш код просто проверит сайт по-другому? Возможно, что-то вроде этого.
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# ржавый, поэтому вам нужно проверить это дважды.