Здравствуйте, Дима Иванов, Вы писали:
ДИ>Подскажите пожалуйста, как можно вывести ДИ>из программы окно Internet Explorer и ДИ>передать ему параметры.
Может быть это поможет.
Взято из MSDN — на VB.NET:
Dim target As String = "http://" & LinkLabel1.Text & "/"
Try
System.Diagnostics.Process.Start(target)
Catch noBrowser As System.ComponentModel.Win32Exception _
When noBrowser.ErrorCode = -2147467259
MessageBox.Show(noBrowser.Message)
Catch other As System.ComponentModel.Win32Exception
MessageBox.Show(other.Message)
End Try
См. также: Q305703 HOW TO: Programmatically Start the Default Internet Browser by Using Visual C# .NET Q305705 HOW TO: Programmatically Start the Default Internet Browser by Using Visual Basic .NET
... << RSDN@Home 1.0 beta 6a >>
Re[2]: Как вывести из прогрммы окно InternetExplorer
Здравствуйте, mihailik, Вы писали:
M>Нет, так только текстовые параметры передадутся.
M>Есть лучший способ. Для программирования IE из-под .NET лучше использовать JScript.NET, из-за совместимости.
M>
Здравствуйте, mihailik, Вы писали:
M>Нет, так только текстовые параметры передадутся.
M>Есть лучший способ. Для программирования IE из-под .NET лучше использовать JScript.NET, из-за совместимости.
M>
M>>Есть лучший способ. Для программирования IE из-под .NET лучше использовать JScript.NET, из-за совместимости.
ДИ>А с использованием C# — как это сделать?
Ну, примерно так же. Придётся сделать импорт TLB-библиотеки shdocvw.dll, в ней хранится описание InternetExplorer.Application. И подключить Microsoft.mshtml.dll, там описываются все типы элементов HTML (document, window, body, style и пр.)
C# в принципе может работать с IE, но глючно (из-за проблем в Microsoft.mshtml.dll). Если "общение" между дотнетом и IE плотное, лучше сделать отдельный модуль на JScript.NET. В JScript.NET есть позднее связывание, и он больше всего подходит для работы с IE.
... << RSDN@Home 1.0 beta 6a >>
Re[5]: Как вывести из прогрммы окно InternetExplorer
Здравствуйте, mihailik, Вы писали:
M>>>Есть лучший способ. Для программирования IE из-под .NET лучше использовать JScript.NET, из-за совместимости.
ДИ>>А с использованием C# — как это сделать?
M>Ну, примерно так же. Придётся сделать импорт TLB-библиотеки shdocvw.dll, в ней хранится описание InternetExplorer.Application. И подключить Microsoft.mshtml.dll, там описываются все типы элементов HTML (document, window, body, style и пр.)
M>C# в принципе может работать с IE, но глючно (из-за проблем в Microsoft.mshtml.dll). Если "общение" между дотнетом и IE плотное, лучше сделать отдельный модуль на JScript.NET. В JScript.NET есть позднее связывание, и он больше всего подходит для работы с IE.
Написал код
SHDocVw.WebBrowserClass ie = new SHDocVw.WebBrowserClass();
ie.Navigate("1.xml",ref obj,ref obj,ref obj, ref obj);
Выдает неопознанную ошибку.
An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in TestInternet.exe
Что не так!
Re[3]: Как вывести из прогрммы окно InternetExplorer
Здравствуйте, mihailik, Вы писали:
M>Нет, так только текстовые параметры передадутся.
M>Есть лучший способ. Для программирования IE из-под .NET лучше использовать JScript.NET, из-за совместимости.
А не подскажешь примерчиком как лучше всего скрестить JScript.NET и C#?
Допустим у меня есть Форма(С#), на форме Стоит WebBrowser компонента как из JScript получить innerHTML некоего элемента и вернуть его в C#? Или может лучше способ есть?
Re[4]: Как вывести из прогрммы окно InternetExplorer
N>Допустим у меня есть Форма(С#), на форме Стоит WebBrowser компонента как из JScript получить innerHTML некоего элемента и вернуть его в C#? Или может лучше способ есть?
У WebBrowser есть Document, его можно использовать в JScript.NET. Например, Document.body.innerHTML.
На JScript нужно написать отдельную библиотеку, "сборку" по-местному. Скомпилировать его при помощи jsc.exe. И вызывать функции этой библиотеки из C#.
Для простых случаев можно и без JScript.NET обойтись. Конкретно — нужно посмотреть тип Document, кажется это mshtml.HTMLDocumentClass или что-то в этом роде. Этот тип описан в Microsoft.mshtml.dll, вот там и смотреть: какие методы, какие свойства и т.п.
Но для работы с C# оно плоховато приспособлено, потому и JScript.
... << RSDN@Home 1.0 beta 6a >>
Re[6]: Как вывести из прогрммы окно InternetExplorer
ДИ>Написал код ДИ> SHDocVw.WebBrowserClass ie = new SHDocVw.WebBrowserClass(); ДИ> ie.Navigate("1.xml",ref obj,ref obj,ref obj, ref obj); ДИ>Выдает неопознанную ошибку. ДИ>An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in TestInternet.exe ДИ>Что не так!
WebBrowser должен лежать на форме, а форма должна быть видна (Visible). Работает только так
... << RSDN@Home 1.0 beta 6a >>
Re[7]: Как вывести из прогрммы окно InternetExplorer
Здравствуйте, mihailik, Вы писали:
ДИ>>Написал код ДИ>> SHDocVw.WebBrowserClass ie = new SHDocVw.WebBrowserClass(); ДИ>> ie.Navigate("1.xml",ref obj,ref obj,ref obj, ref obj); ДИ>>Выдает неопознанную ошибку. ДИ>>An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in TestInternet.exe ДИ>>Что не так!
M>WebBrowser должен лежать на форме, а форма должна быть видна (Visible). Работает только так
Кааие параматры нужно задать функции Navigate();
Re[5]: Как вывести из прогрммы окно InternetExplorer
Здравствуйте, mihailik, Вы писали:
M>Для простых случаев можно и без JScript.NET обойтись. Конкретно — нужно посмотреть тип Document, кажется это mshtml.HTMLDocumentClass или что-то в этом роде. Этот тип описан в Microsoft.mshtml.dll, вот там и смотреть: какие методы, какие свойства и т.п.
Дык блин вся эта тема и поднялась из-за того, что ни фига там не работает — даже простые вещи. Например, мне нужно сделать простую вещь: получить у элемента с id, например "elem" innerHTML и у меня не получается. Перепробовал тучу вариантов — не получилось. У документа могу получить/изменить у элемента — нет . Ты случайно не делал чего-нибудь подобного?
Re[4]: Как вывести из прогрммы окно InternetExplorer
Здравствуйте, Nikto, Вы писали:
N>А не подскажешь примерчиком как лучше всего скрестить JScript.NET и C#? N>Допустим у меня есть Форма(С#), на форме Стоит WebBrowser компонента как из JScript получить innerHTML некоего элемента и вернуть его в C#? Или может лучше способ есть?
У меня типа шизофрения, разговариваю сам с собой .
Вот ответ на мой вопрос:
jscript1.js:
package WebBrows
{
public class MyWB
{
function Hi(document)
{
document.parentWindow.alert("Hi");
document.parentWindow.alert(document.all("DHTMLEdit").innerHTML);
document.parentWindow.alert(document.all("DHTMLEdit").outerHTML);
}
}
}
N>Дык блин вся эта тема и поднялась из-за того, что ни фига там не работает — даже простые вещи. Например, мне нужно сделать простую вещь: получить у элемента с id, например "elem" innerHTML и у меня не получается. Перепробовал тучу вариантов — не получилось. У документа могу получить/изменить у элемента — нет . Ты случайно не делал чего-нибудь подобного?
Делал, как же не делать. У одного-то элемента, как правило, работает, а уж как начнёшь рыться — хоть под стол прячься.
Часто ползут глюки из-за того, обращаешься ли к методу класса или интерфейса. Если ещё учесть, что каждый хренов <button> реализует как правило штук восемь интерфейсов: IHTMLElement, IHTMLElement2, IHTMLButtonElement и т.д., то картина разрушений становится ещё ужаснее
... << RSDN@Home 1.0 beta 6a >>
Re[8]: Как вывести из прогрммы окно InternetExplorer
M>>WebBrowser должен лежать на форме, а форма должна быть видна (Visible). Работает только так
ДИ>Кааие параматры нужно задать функции Navigate();
Ах, да, функция-то Navigate2, а не Navigate. С двойкой стабильнее работает. А параметры — ref object, там же написано. Нужно создать пустой объект new object(), и передавать его в ненужные параметры.
Ну и насчёт Visible не забывай.
... << RSDN@Home 1.0 beta 6a >>
Re[9]: Как вывести из прогрммы окно InternetExplorer
Здравствуйте, mihailik, Вы писали:
M>>WebBrowser должен лежать на форме, а форма должна быть видна (Visible). Работает только так
ДИ>Кааие параматры нужно задать функции Navigate();
M>Ах, да, функция-то Navigate2, а не Navigate. С двойкой стабильнее работает. А параметры — ref object, там же написано. Нужно создать пустой объект new object(), и передавать его в ненужные параметры.
M>Ну и насчёт Visible не забывай.
Еще один вопрос.
Как привязать объект-документ к открытому окну.
mshtml.HTMLDocumentClass doc = new mshtml.HTMLDocumentClass();
doc = ie.Document;
так не получается, может надо присвоить документ какому-нибудь
свойству doc.
Re: Как вывести из прогрммы окно InternetExplorer
От:
Аноним
Дата:
09.04.03 09:51
Оценка:
А как в это окно писать HTML ??
Re[2]: Как вывести из прогрммы окно InternetExplorer
ДИ>Как привязать объект-документ к открытому окну. ДИ> mshtml.HTMLDocumentClass doc = new mshtml.HTMLDocumentClass(); ДИ> doc = ie.Document; ДИ>так не получается, может надо присвоить документ какому-нибудь ДИ>свойству doc.
Это ты создал HTMLDocumentClass, а потом сразу затёр его содержимым ie.Document.
Попробуй doc=ie.Document as mshtml.HTMLDocumentClass. Если будет ругаться, то нужно посмотреть, какой тип у ie.Document. Может, там вовсе и не HTMLDocumentClass, а какой-нибудь HTMLDocument2Class или System.__ComObject.