WebSnap.cls
上传用户:davilee3
上传日期:2015-04-22
资源大小:986k
文件大小:5k
源码类别:

浏览器

开发平台:

Visual Basic

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "cWebSnap"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = True
  14. '---------------------------------------------------------------------------------------
  15. ' Module    : cWebSnap
  16. ' DateTime  : 2005-8-15 22:34
  17. ' Author    : Lingll
  18. ' Purpose   :
  19. '---------------------------------------------------------------------------------------
  20. Option Explicit
  21. Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
  22. Private Declare Function MoveWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
  23. Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long
  24. Implements LEPluginLib.ILEpluginCmd
  25. Private m_Web As SHDocVw.WebBrowser
  26. Private m_Info As LEPluginLib.ILEInfo
  27. Private Function ILEpluginCmd_RunCommand(Optional ByVal lParam As Long = 0&) As Boolean
  28. On Error Resume Next
  29. Dim tShowErrMsg As Boolean
  30. tShowErrMsg = True
  31. If Not m_Web Is Nothing Then
  32.     If Not m_Web.Document Is Nothing Then
  33.         If TypeOf m_Web.Document Is MSHTML.HTMLDocument Then
  34.             tShowErrMsg = False
  35.             Call SaveWebSnap
  36.         End If
  37.     End If
  38. End If
  39. If tShowErrMsg Then
  40.     MsgBox "so error"
  41. End If
  42. End Function
  43. Private Function ILEpluginCmd_SendMessage(ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  44. End Function
  45. Private Sub ILEpluginCmd_SetSite(ByVal pUnkSite As stdole.IUnknown, ByVal vOutPort As LEPluginLib.ILEInfo)
  46. If Not pUnkSite Is Nothing Then
  47.     Set m_Web = pUnkSite
  48. End If
  49. If Not vOutPort Is Nothing Then
  50.     Set m_Info = vOutPort
  51. End If
  52. End Sub
  53. Private Sub ILEpluginCmd_ShowOption()
  54. End Sub
  55. '---------------------------------------------------------------------------------------
  56. ' Procedure : SaveWebSnap
  57. ' DateTime  : 2005-8-15 22:34
  58. ' Author    : Lingll
  59. ' Purpose   :
  60. '---------------------------------------------------------------------------------------
  61. Private Sub SaveWebSnap(Optional vFile$)
  62. On Error Resume Next
  63. Dim tPct As PictureBox
  64. Dim tFrm As frmSnap
  65. Dim tDoc As MSHTML.HTMLDocument
  66. Dim tIV As IViewObject
  67. Dim tRc As RECT, oRc As RECT
  68. Dim tOw&, tOh&, tSw&, tSh&
  69. Dim tHdl&
  70. Dim tHWin&, tStr$
  71. If Len(vFile) = 0 Then
  72.     Dim tSave As cOpenSaveDlg
  73.     Set tSave = New cOpenSaveDlg
  74.     tSave.Filter = "*.bmp|*.bmp"
  75.     tSave.Flags = OFN_OVERWRITEPROMPT
  76.     
  77.     tStr = m_Web.Document.Title
  78.     Call FormatFileName(tStr)
  79.     tSave.FileName = tStr & ".bmp"
  80.     
  81.     tHWin = m_Info.GetMainWindowObj.hwnd
  82.     If tSave.ShowSave(tHWin) Then
  83.         vFile = tSave.FileName
  84.         If LCase$(Right$(vFile, 4)) <> ".bmp" Then
  85.             vFile = vFile & ".bmp"
  86.         End If
  87.     Else
  88.         Exit Sub
  89.     End If
  90. End If
  91. tHdl = GetWebHwnd()
  92. If tHdl <> 0 Then
  93.     Call GetWindowRect(tHdl, oRc)
  94.     
  95.     tOw = oRc.Right - oRc.Left
  96.     tOh = oRc.Bottom - oRc.Top
  97.     
  98.     Set tDoc = m_Web.Document
  99.     Set tIV = tDoc
  100.     
  101.     tDoc.body.Scroll = "no"
  102.     
  103.     tSw = tDoc.body.scrollWidth '+ 4
  104.     tSh = tDoc.body.scrollHeight '+ 4
  105.     
  106.     MoveWindow tHdl, 0, 0, tSw, tSh, 0
  107.     
  108.     tRc.Right = tSw
  109.     tRc.Bottom = tSh
  110.     
  111.     Set tFrm = New frmSnap
  112.     Load tFrm
  113.     Set tPct = tFrm.pctSnap
  114.     
  115.     tPct.Move 0, 0, tSw, tSh
  116.     
  117.     tIV.Draw DVASPECT_CONTENT, 1, ByVal 0, ByVal 0, _
  118.             0&, tPct.hDC, tRc, tRc, ByVal 0, ByVal 0
  119.     
  120.     tDoc.body.Scroll = "yes"
  121.     
  122.     MoveWindow tHdl, 0, 0, tOw, tOh, 1
  123.     SavePicture tPct.Image, vFile
  124. Else
  125.     MsgBox "error"
  126. End If
  127. End Sub
  128. '---------------------------------------------------------------------------------------
  129. ' Procedure : GetWebHwnd
  130. ' DateTime  : 2005-8-15 22:34
  131. ' Author    : Lingll
  132. ' Purpose   :
  133. '---------------------------------------------------------------------------------------
  134. Private Function GetWebHwnd() As Long
  135. On Error Resume Next
  136. Dim tHdl&
  137. If Not m_Info Is Nothing Then
  138.     tHdl = FindWindowEx(m_Info.GetActiveWindow.hwnd, 0, "Shell Embedding", "")
  139.     If tHdl <> 0 Then
  140.         tHdl = FindWindowEx(tHdl, 0, "Shell DocObject View", "")
  141.         If tHdl <> 0 Then
  142.             GetWebHwnd = tHdl
  143.         End If
  144.     End If
  145. End If
  146. End Function
  147. '---------------------------------------------------------------------------------------
  148. ' Procedure : FormatFileName
  149. ' DateTime  : 2005-8-15 22:50
  150. ' Author    : Lingll
  151. ' Purpose   :
  152. '---------------------------------------------------------------------------------------
  153. Private Sub FormatFileName(nFN$)
  154. nFN = Replace(nFN, "", " ")
  155. nFN = Replace(nFN, "/", " ")
  156. nFN = Replace(nFN, "?", " ")
  157. nFN = Replace(nFN, "*", " ")
  158. nFN = Replace(nFN, "|", " ")
  159. nFN = Replace(nFN, ":", " ")
  160. nFN = Replace(nFN, """", " ")
  161. nFN = Replace(nFN, "<", " ")
  162. nFN = Replace(nFN, ">", " ")
  163. End Sub