Можно сделать много, не сходя с ума на сторонних продуктах и mshtml (т.е. interop). используйте Систему. Windows. Формы. WebBrowser. Оттуда, можно сделать такие вещи как "GetElementById" на HtmlDocument или "GetElementsByTagName" на HtmlElements. Если Вы хотите на самом деле взаимодействовать через интерфейс с браузером (моделируйте нажатия кнопок, например), можно использовать немного отражения (imo меньшее зло, чем Interop), чтобы сделать это:
var wb = new WebBrowser()
... говорят браузеру перейти (тангенциальный к этому вопросу). Тогда на событии Document_Completed можно моделировать щелчки как это.
var doc = wb.Browser.Document
var elem = doc.GetElementById(elementId);
object obj = elem.DomElement;
System.Reflection.MethodInfo mi = obj.GetType().GetMethod("click");
mi.Invoke(obj, new object[0]);
можно сделать подобный отражательный материал, чтобы утверждать, что формы, и т.д.
Обладают.
Я считаю, что стандартное решение - добавить в лицензию пункт об исключении. GCC делает это, например :
В качестве особого исключения вы можете использовать этот файл как часть бесплатного программного обеспечения. библиотека без ограничений. В частности, если другие файлы создают экземпляр шаблоны или используйте макросы или встроенные функции из этого файла, или вы компилируете этот файл и связать его с другими файлами, чтобы создать исполняемый файл, это файл сам по себе не приводит к тому, что полученный исполняемый файл покрывается Стандартная общественная лицензия GNU. Однако это исключение не сделать недействительными любые другие причины, по которым исполняемый файл может быть покрыт Стандартная общественная лицензия GNU.
Здесь есть диаграмма , суммирующая различные различные лицензии FOSS, а в первом столбце комментарии по связыванию несвободных программ. Он не выглядит особенно актуальным и не включает лицензионную версию, но, возможно, с него все же стоит начать.