Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Public WithEvents IE As InternetExplorer / 2 сообщений из 2, страница 1 из 1
26.05.2004, 10:57
    #32533971
Ajax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Public WithEvents IE As InternetExplorer
Добрый день...
кто работал с этой бибидиотекой как её подключить?
...
Рейтинг: 0 / 0
26.05.2004, 11:16
    #32534017
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Public WithEvents IE As InternetExplorer
Ставишь галки на Microsoft Internet Controls и Microsoft HTML Object Library, далее по тексту:

cIEWindows.cls

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
Private WithEvents winShell As SHDocVw.ShellWindows
Private mCol As Collection
Dim bRefreshing As Boolean

Public Event IEWindowRegistered()
Public Event IEWindowRevoked()
Public Event IENavigationBegin(hwnd As Long, ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)
Public Event IENavigationComplete(hwnd As Long, ByVal pDisp As Object, URL As Variant)
Public Event IEDocumentComplete(hwnd As Long, ByVal pDisp As Object, URL As Variant)
Public Event IEDownloadBegin(hwnd As Long)
Public Event IEDownloadComplete(hwnd As Long)
Public Event IEOnContextMenu(hwnd As Long)
Public Event IEMouseDown(hwnd As Long, Button As Long, Shift As Long, X As Single, Y As Single)
Public Event IEMouseUp(hwnd As Long, Button As Long, Shift As Long, X As Single, Y As Single)
Public Event IECommandStateChange(hwnd As Long, Button As CommandStateChangeConstants, Enable As Boolean)

Private Function Add(IEctl As SHDocVw.InternetExplorer) As IE_Class
Dim objNewMember As IE_Class
    Set objNewMember = New IE_Class
    Set objNewMember.IEctl = IEctl
    mCol.Add objNewMember ', h & objNewMember.IEHandle
    Set Add = objNewMember
    Set objNewMember = Nothing
End Function

Public Property Get IE(vntIndexKey As Variant) As IE_Class
  Do While bRefreshing
     DoEvents
  Loop
  Set IE = mCol(vntIndexKey)
End Property

Public Property Get Count() As Long
   Count = mCol.Count
End Property

Private Sub Remove(vntIndexKey As Variant)
   mCol.Remove vntIndexKey
End Sub

Public Property Get NewEnum() As IUnknown
   Set NewEnum = mCol.[_NewEnum]
End Property

Private Sub Class_Initialize()
  cIEWPtr = ObjPtr(Me)
  Refresh_Col
End Sub

Private Sub Class_Terminate()
   Set mCol = Nothing
   Set winShell = Nothing
End Sub

Private Sub winShell_WindowRegistered(ByVal lCookie As Long)
  Refresh_Col
  Do While bRefreshing
     DoEvents
  Loop
  RaiseEvent IEWindowRegistered
End Sub

Private Sub winShell_WindowRevoked(ByVal lCookie As Long)
  Refresh_Col
  Do While bRefreshing
     DoEvents
  Loop
  RaiseEvent IEWindowRevoked
End Sub

Public Sub Refresh_Col()
Dim SWs As New SHDocVw.ShellWindows
Dim var As SHDocVw.InternetExplorer
   bRefreshing = True
   Set mCol = Nothing
   Set mCol = New Collection
   For Each var In SWs
       Add var
   Next
   Set winShell = SWs
   Set SWs = Nothing
   Set var = Nothing
   bRefreshing = False
End Sub

Friend Function FireEvent(nEvent As IDEVENTS, hwnd As Long, ParamArray EventInfo())
   Select Case nEvent
          Case ID_BeforeNavigate
               RaiseEvent IENavigationBegin(hwnd, EventInfo(0), EventInfo(1), EventInfo(2), EventInfo(3), EventInfo(4), EventInfo(5), CBool(EventInfo(6)))
          Case ID_NavigationComplete
               RaiseEvent IENavigationComplete(hwnd, EventInfo(0), EventInfo(1))
          Case ID_DocumentComplete
               RaiseEvent IEDocumentComplete(hwnd, EventInfo(0), EventInfo(1))
          Case ID_DownloadBegin
               RaiseEvent IEDownloadBegin(hwnd)
          Case ID_DownloadComplete
               RaiseEvent IEDownloadComplete(hwnd)
          Case ID_ContextMenu
               RaiseEvent IEOnContextMenu(hwnd)
          Case ID_MouseDown
               RaiseEvent IEMouseDown(hwnd, CInt(EventInfo(0)), CInt(EventInfo(1)), CSng(EventInfo(2)), CSng(EventInfo(3)))
          Case ID_MouseUp
               RaiseEvent IEMouseUp(hwnd, CInt(EventInfo(0)), CInt(EventInfo(1)), CSng(EventInfo(2)), CSng(EventInfo(3)))
          Case ID_CommandStateChange
               RaiseEvent IECommandStateChange(hwnd, CLng(EventInfo(0)), CBool(EventInfo(1)))
   End Select
End Function

IE_Class.cls

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
'Private Type POINTAPI
'   X As Long
'   Y As Long
'End Type
'
'Private Declare Function GetAsyncKeyState% Lib "user32" (ByVal vKey As Long)
'Private Declare Function GetCursorPos& Lib "user32" (lpPoint As POINTAPI)
'Private Declare Function ScreenToClient& Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI)
'Private Declare Function GetKeyState% Lib "user32" (ByVal nVirtKey As Long)

Private WithEvents IE As SHDocVw.InternetExplorer
Private WithEvents IEDoc As MSHTML.HTMLDocument
Private mvarIEHandle As Long 'local copy
'Private mvarEnableBack As Boolean 'local copy
'Private mvarEnableForward As Boolean 'local copy

Private bLDown As Boolean, bRDown As Boolean

Public Property Get EnableForward() As Boolean
   EnableForward = mvarEnableForward
End Property

Public Property Get EnableBack() As Boolean
   EnableBack = mvarEnableBack
End Property

Public Property Set IEctl(IncomeIE As SHDocVw.InternetExplorer)
   Set IE = IncomeIE
   mvarIEHandle = IncomeIE.hwnd
   On Error Resume Next
   Set IEDoc = IncomeIE.Document
   bCancel = True
   Err.Clear
   IE.GoForward
   If Err Then
      mvarEnableForward = False
      bCancel = False
   Else
      IE.ExecWB OLECMDID_STOPDOWNLOAD, OLECMDEXECOPT_DONTPROMPTUSER
   End If
   On Error GoTo 0
End Property

Public Property Get IEctl() As SHDocVw.InternetExplorer
   Set IEctl = IE
End Property

Public Property Get IEHandle() As Long
    IEHandle = mvarIEHandle
End Property

'Private Sub IE_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)
'    'CallEvent ID_BeforeNavigate, mvarIEHandle, pDisp, URL, Flags, TargetFrameName, PostData, Headers, Cancel
'    If bCancel Then
'       Cancel = True
'       bCancel = False
'    End If
'End Sub

'Private Sub IE_CommandStateChange(ByVal Command As Long, ByVal Enable As Boolean)
'   Select Case Command
'     Case CSC_NAVIGATEBACK
'          mvarEnableBack = Enable
'     Case CSC_NAVIGATEFORWARD
'          mvarEnableForward = Enable
'   End Select
'   'CallEvent ID_CommandStateChange, mvarIEHandle, Command, Enable
'End Sub

'Private Sub IE_DocumentComplete(ByVal pDisp As Object, URL As Variant)
'  If pDisp Is IE Then
'     'callEvent ID_DocumentComplete, mvarIEHandle, pDisp, URL
'  End If
'End Sub
'
'Private Sub IE_DownloadBegin()
'  CallEvent ID_DownloadBegin, mvarIEHandle
'End Sub
'
'Private Sub IE_DownloadComplete()
'  CallEvent ID_DownloadComplete, mvarIEHandle
'End Sub
'
'Private Sub IE_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
'  CallEvent ID_NavigationComplete, mvarIEHandle, pDisp, URL
'End Sub

Private Sub Class_Terminate()
  On Error Resume Next
  Set IE = Nothing
End Sub

'Private Function IEDoc_oncontextmenu() As Boolean
'   CallEvent ID_ContextMenu, mvarIEHandle
'   IEDoc_oncontextmenu = Not bCancel
'   If bCancel = True Then bCancel = False
'End Function
'
'Private Sub IEDoc_onmousedown()
'   Dim pt As POINTAPI
'   Dim btn As Long, i As Long
'   GetCursorPos pt
'   ScreenToClient mvarIEHandle, pt
'   If GetAsyncKeyState(vbKeyLButton) < 0 Then
'      btn = 1: bLDown = True
'   Else
'      btn = 2: bRDown = True
'   End If
'   If GetAsyncKeyState(vbKeyShift) Then i = 1
'   If GetAsyncKeyState(vbKeyControl) Then i = 2
'   If GetAsyncKeyState(vbKeyMenu) Then i = 4
'   CallEvent ID_MouseDown, mvarIEHandle, btn, i, CSng(pt.X), CSng(pt.Y)
'End Sub
'
'Private Sub IEDoc_onmouseup()
'   Dim pt As POINTAPI
'   Dim btn As Long, i As Long
'   GetCursorPos pt
'   ScreenToClient mvarIEHandle, pt
'   If bLDown Then
'      btn = 1: bLDown = False
'   Else
'      btn = 2: bRDown = False
'   End If
'   If GetAsyncKeyState(vbKeyShift) Then i = 1
'   If GetAsyncKeyState(vbKeyControl) Then i = 2
'   If GetAsyncKeyState(vbKeyMenu) Then i = 4
'   CallEvent ID_MouseUp, mvarIEHandle, btn, i, CSng(pt.X), CSng(pt.Y)
'End Sub

Пример классический, не помню, где подобрал. Данный вариант кастрирован мной для специфической узкой задачи, но, чтобы понять что к чему, достаточно. Если интересно, могу потом выложить полный вариант.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Public WithEvents IE As InternetExplorer / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]