Есть несколько решений, не знаю, какое из них будет лучшим для вас ...
- Придерживайтесь оригинального подхода
- Внедрите контроль веб-браузера в свое приложение, как это предлагается в других ответах
- Делать все программно "за сценой"
Для # 3 вы можете посмотреть здесь: http://geekswithblogs.net/rakker/archive/2006/04/21/76044.aspx
Если вы хотите использовать # 1 - это сложнее, так как вам нужно управлять внешним приложением, а разные браузеры будут вести себя по-разному.
Я использовал протокол «javascript:» и приведенный ниже код с IE в качестве браузера по умолчанию при работе с одним «недружественным пользователю» приложением. Обратите внимание, что это не «готовый к использованию» код. Обработка ошибок отсутствует, пользователь может сместить фокус с запущенного браузера или использовать браузер без поддержки протокола «javascript:» и т. Д.
static void Main()
{
Settings s = Settings.Default;
Process.Start(s.URL1);
Thread.Sleep(s.Delay1);
SendKeys.SendWait("%D");
Thread.Sleep(100);
SendKeys.SendWait(EncodeForSendKey(s.URL2));
SendKeys.SendWait("{ENTER}");
}
public static string EncodeForSendKey(string value)
{
StringBuilder sb = new StringBuilder(value);
sb.Replace("{", "{{}");
sb.Replace("}", "{}}");
sb.Replace("{{{}}", "{{}");
sb.Replace("[", "{[}");
sb.Replace("]", "{]}");
sb.Replace("(", "{(}");
sb.Replace(")", "{)}");
sb.Replace("+", "{+}");
sb.Replace("^", "{^}");
sb.Replace("%", "{%}");
sb.Replace("~", "{~}");
return sb.ToString();
}
- URL1: http://www.google.com
- URL2: javascript: function x () {document.all.q.value = 'stackoverflow'; document.forms [0] .submit ();} x ();