Wb.ExecWb OLECMDID_PRINT .....
ALX_2002 писал(а):Отлично... Перебрал, нашёл. Хотя правда не понятно чего искать. HWND ? Он и так есть - Usercontrol.ContainerHwnd . А дальше то как ?
Как к методу то обратиться ?
Public Sub Print()
Dim winShell As New SHDocVw.ShellWindows
Dim var As SHDocVw.InternetExplorer
On Error Resume Next
For Each var In winShell
If TypeName(var.document) = "HTMLDocument" Then
If var.document.location.href = yourdoclochref then var.ExecWB OLECMDID_PRINT
End If
Next
End Sub
Option Explicit
Private Sub UserControl_DblClick()
Dim p As Object
On Error GoTo noparent
Set p = UserControl.Parent
If p Is Nothing Then
MsgBox "Parent property is Nothing.", vbInformation
Else
MsgBox "Parent is of type " & TypeName(p)
End If
Exit Sub
noparent:
MsgBox "Cannot get Parent property: " & vbNewLine & Err.Number & vbNewLine & Err.Description, vbExclamation
End Sub
<html><body><object CLASSID="clsid:9384FDC8-3C24-443D-8907-73ADDC7C3E58" width="100" heigth="100"></object></body></html>
---------------------------
prjfooControl
---------------------------
Parent is of type HTMLDocument
---------------------------
ОК
---------------------------
GSerg писал(а):Я перестаю понимать происходящее...
Вот я сейчас набросал контрол, весь код которого:
- Код: Выделить всё
Option Explicit
Private Sub UserControl_DblClick()
Dim p As Object
On Error GoTo noparent
Set p = UserControl.Parent
If p Is Nothing Then
MsgBox "Parent property is Nothing.", vbInformation
Else
MsgBox "Parent is of type " & TypeName(p)
End If
Exit Sub
noparent:
MsgBox "Cannot get Parent property: " & vbNewLine & Err.Number & vbNewLine & Err.Description, vbExclamation
End Sub
Зарегил, написал в HTML:
- Код: Выделить всё
<html><body><object CLASSID="clsid:9384FDC8-3C24-443D-8907-73ADDC7C3E58" width="100" heigth="100"></object></body></html>
Даблкликнул по жёлтому прямоугольнику, получил---------------------------
prjfooControl
---------------------------
Parent is of type HTMLDocument
---------------------------
ОК
---------------------------
В чём проблема, объясните?
ALX_2002 писал(а):2 Gserg: Мда.... Воооооообще не в теме....
GSerg писал(а):ALX_2002 писал(а):2 Gserg: Мда.... Воооооообще не в теме....
Так объясни подробнее.
GSerg писал(а):Странно всё это.
Пути от document к browser я так и не нашёл (хотя обратный есть).
Однако, ExecWB является обёрткой над IOleCommandTarget::Exec, а IHTMLDocument2 имеет метод execCommand, который является обёрткой над ней же, просто менее функциональной.
Поэтому вывод заключается в том, что либо будет достаточно функционала execCommand, либо надо просто скастовать IHTMLDocument2 к IOleCommandTarget (что разрешается) и вызвать Exec напрямую...
GSerg писал(а):Можно так сделать. Читай мои посты в этой теме, начиная с первого.
У webbrowser'а есть свойство RegisterAsBrowser, если оно false - его в ShellWindows нет.Только почему то когда делаю в VB контрол и запускаю его в среде самого VB, то это окно не включается в коллекцию ShellWindows
А мой пример не работает?Мне нужно получить доступ к самому IE.
GSerg писал(а):IHTMLDocument2 имеет метод execCommand
GSerg писал(а):либо надо просто скастовать IHTMLDocument2 к IOleCommandTarget (что разрешается) и вызвать Exec напрямую
GSerg писал(а):Странно ты читаешь внимательно.GSerg писал(а):IHTMLDocument2 имеет метод execCommandGSerg писал(а):либо надо просто скастовать IHTMLDocument2 к IOleCommandTarget (что разрешается) и вызвать Exec напрямую
var.hwnd (см пример) не работает для вебконтрола (уже обсуждалось), только для окна собственно ie. Поэтому я и сравниваю адреса документов.Я взял Activex.ContainerHWND и перебрал коллекцию ShellWindows сравнивая с их HWND окон IE
И не совпадают они гады Чего то не то я с ними делаю видимо
Antonariy писал(а):var.hwnd (см пример) не работает для вебконтрола (уже обсуждалось), только для окна собственно ie. Поэтому я и сравниваю адреса документов.Я взял Activex.ContainerHWND и перебрал коллекцию ShellWindows сравнивая с их HWND окон IE
И не совпадают они гады Чего то не то я с ними делаю видимо
Dim IeWindows As New shdocvw.ShellWindows
Dim IeWindow As shdocvw.WebBrowser
Private Sub UserControl_Show()
For Each IeWindow In IeWindows
If TypeName(IeWindow.document) = "HTMLDocument" Then
If IeWindow.document.Url = UserControl.Parent.Url Then
Exit For
End If
End If
Next
End Sub
Public Property Get IeObject() As shdocvw.InternetExplorer
Set IeObject = IeWindow
End Property
<OBJECT CLASSID="clsid:3338F078-B63E-4982-8263-0E0D3BF95168" id=CTRL></OBJECT>
sdasdasdasdsadasd
<SCRIPT language="vbscript">
Sub Document_onclick()
CTRL.IeObject.ExecWB 2,6
End sub
</SCRIPT>
либо надо просто скастовать IHTMLDocument2 к IOleCommandTarget (что разрешается) и вызвать Exec напрямую
У ие довольно мутная структура окон, не могу представить, что вернет ContainerHWND. Попробуй апи GetParent(UserControl.hwnd).Только не понял почему var.hwnd.
Падает метод ExecWB. Пока что не могу въехать почему.
CTRL.IeObject.ExecWB 6,2
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 53