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

浏览器

开发平台:

Visual Basic

  1. Attribute VB_Name = "mPlugin"
  2. Option Explicit
  3. ''插件数据--脚本插件
  4. 'Public Type PluginData_Script
  5. '    'Title As String
  6. '    Language As String
  7. '    Script As String
  8. '    LoadedScript As Boolean '是否加载了脚本
  9. '    'FileName As String
  10. '    '程序启动时是否加载脚本,0:启动时不加载,1:启动时加载
  11. '    LoadAtExec As Long
  12. '    '执行类型,可以有三个值,0:在顶层页面中执行,1:在页面中的每一个frame都执行,2:仅在鼠标所在的frame中执行
  13. '    RunType As Long
  14. 'End Type
  15. '
  16. ''插件数据--exe插件
  17. 'Public Type PluginData_Exe
  18. '    'Title As String
  19. '    'FileName As String
  20. '    Param As String
  21. 'End Type
  22. '
  23. ''插件数据--com插件
  24. 'Public Type PluginData_Com
  25. '    'Title As String
  26. '    'FileName As String
  27. '    ObjectName As String
  28. '    ClassID As String
  29. 'End Type
  30. '
  31. ''插件数据--dll插件
  32. 'Public Type PluginData_Dll
  33. '    'Title As String
  34. '    'FileName As String
  35. '    message As Long
  36. '    Reserve As Long
  37. 'End Type
  38. 'Public Enum enumPluginModuleType
  39. '    PluginMT_None=
  40. '    PluginMT_Script = 1
  41. '    PluginMT_Exe = 2
  42. '    PluginMT_Com = 3
  43. '    PluginMT_Dll = 4
  44. 'End Enum
  45. ''插件数据
  46. 'Public Type PluginData
  47. '    Title As String         '名称,对应于菜单或按钮显示的文字
  48. '    DirectExe As Long       '是否直接的exe文件
  49. '    ModuleType As String    'script,exe,com,dll
  50. '    FileName As String      '要执行的文件名,exe | ini
  51. '    Param As String
  52. '
  53. '    o_FileName As String    'ini中指向的真实文件名
  54. '    o_Title As String       'ini文件中的Title
  55. '
  56. '    Data_Script As PluginData_Script
  57. '    Data_Exe As PluginData_Exe
  58. '    Data_Com As PluginData_Com
  59. '    Data_Dll As PluginData_Dll
  60. 'End Type
  61. Public Const PluginTypeTag_Command$ = "command"
  62. Public Const PluginTypeTag_SideBand$ = "sideband"
  63. Public Const PluginTypeTag_ToolBand$ = "toolband"
  64. '插件(ini)文件标记
  65. Public Const LEPluginFlag$ = "LE_Plugin"
  66. Public gPlugins() As cPluginData ' PluginData '1 base
  67. Public gPluginCnt As Long
  68. 'sideband data
  69. Public gPluginsSideBand() As cPluginSideband    '1 base
  70. Public gPluginSBCnt As Long
  71. 'Public gScripts() As ScriptData '1 base
  72. 'Public gScriptCnt As Long
  73. 'Public Const ScriptInfoFlag_Info = "Info"
  74. 'Public Const ScriptInfoFlag_Title = "Title"
  75. 'Public Const ScriptInfoFlag_Language = "Language"
  76. 'Public Const ScriptInfoFlag_Script = "[Script]"
  77. 'Public Const ScriptInfoFlag_RunType = "RunType"
  78. 'Public Const ScriptInfoFlag_LoadAtExec = "LoadAtExec"
  79. 'Private Function GetExtendName(vFile$) As String
  80. 'Dim tPos&
  81. '
  82. 'On Error Resume Next
  83. 'tPos = InStrRev(vFile, ".")
  84. 'If tPos > 0 Then
  85. '    GetExtendName = Mid(vFile, tPos + 1)
  86. 'Else
  87. '    GetExtendName = ""
  88. 'End If
  89. 'End Function
  90. Public Sub SavePlugin()
  91. Dim tIni As cINIFile
  92. Dim i&, tIS$
  93. Set tIni = New cINIFile
  94. With tIni
  95.     .IniFile = AppPath & MainIniName
  96.     .DeleteSection "Plugin"
  97.     .WriteKey "Plugin", "Count", Str$(gPluginCnt)
  98.     For i = 1 To gPluginCnt
  99.         tIS = LTrim$(Str$(i))
  100.         .WriteKey "Plugin", "Title_" & tIS, gPlugins(i).Title
  101.         .WriteKey "Plugin", "FileName_" & tIS, gPlugins(i).FileName
  102.         .WriteKey "Plugin", "Param_" & tIS, gPlugins(i).Param
  103.         .WriteKey "Plugin", "VisInMenu_" & tIS, gPlugins(i).VisInMenu
  104.     Next i
  105.     
  106.     .DeleteSection "Plugin_SideBand"
  107.     .WriteKey "Plugin_SideBand", "Count", Str$(gPluginSBCnt)
  108.     For i = 1 To gPluginSBCnt
  109.         tIS = LTrim$(Str$(i))
  110.         .WriteKey "Plugin_SideBand", "Title_" & tIS, gPluginsSideBand(i).Title
  111.         .WriteKey "Plugin_SideBand", "FileName_" & tIS, gPluginsSideBand(i).FileName
  112.         .WriteKey "Plugin_SideBand", "Param_" & tIS, gPluginsSideBand(i).Param
  113.         .WriteKey "Plugin_SideBand", "VisInMenu_" & tIS, gPluginsSideBand(i).VisInMenu
  114.     Next i
  115. End With
  116. End Sub
  117. Public Sub LoadPlugin()
  118. Call LoadPluginData(AppPath & MainIniName)
  119. Call LoadPluginData_SideBand(AppPath & MainIniName)
  120. End Sub
  121. '---------------------------------------------------------------------------------------
  122. ' Procedure : LoadPluginData
  123. ' DateTime  : 2005-5-29 20:55
  124. ' Author    : Lingll
  125. ' Purpose   : 读取command型插件信息
  126. '---------------------------------------------------------------------------------------
  127. Public Sub LoadPluginData(vIniF$)
  128. Dim tIni As cINIFile
  129. Dim i&, tIS$
  130. Set tIni = New cINIFile
  131. tIni.IniFile = vIniF
  132. gPluginCnt = tIni.ReadInt("Plugin", "Count")
  133. If gPluginCnt > 0 Then
  134.     ReDim gPlugins(0 To gPluginCnt)
  135.     For i = 1 To gPluginCnt
  136.         Set gPlugins(i) = New cPluginData
  137.         tIS = LTrim$(Str$(i))
  138.         gPlugins(i).Title = tIni.ReadKey("Plugin", "Title_" & tIS)
  139.         gPlugins(i).FileName = tIni.ReadKey("Plugin", "FileName_" & tIS)
  140.         gPlugins(i).Param = tIni.ReadKey("Plugin", "Param_" & tIS)
  141.         gPlugins(i).VisInMenu = tIni.ReadInt("Plugin", "VisInMenu_" & tIS, 1)
  142.     Next i
  143. Else
  144.     gPluginCnt = 0
  145.     ReDim gPlugins(0 To 0)
  146.     
  147. End If
  148. Call ReloadPluginData
  149. 'Call LoadPluginsMenu
  150. End Sub
  151. '---------------------------------------------------------------------------------------
  152. ' Procedure : LoadPluginData_SideBand
  153. ' DateTime  : 2005-5-29 20:56
  154. ' Author    : Lingll
  155. ' Purpose   : 读取sideband型插件信息
  156. '---------------------------------------------------------------------------------------
  157. Public Sub LoadPluginData_SideBand(vIniF$)
  158. Dim tIni As cINIFile
  159. Dim i&, tIS$
  160. Set tIni = New cINIFile
  161. tIni.IniFile = vIniF
  162. gPluginSBCnt = tIni.ReadInt("Plugin_SideBand", "Count")
  163. If gPluginSBCnt > 0 Then
  164.     ReDim gPluginsSideBand(0 To gPluginSBCnt)
  165.     For i = 1 To gPluginSBCnt
  166.         Set gPluginsSideBand(i) = New cPluginSideband
  167.         tIS = LTrim$(Str$(i))
  168.         gPluginsSideBand(i).Title = tIni.ReadKey("Plugin_SideBand", "Title_" & tIS)
  169.         gPluginsSideBand(i).FileName = tIni.ReadKey("Plugin_SideBand", "FileName_" & tIS)
  170.         gPluginsSideBand(i).Param = tIni.ReadKey("Plugin_SideBand", "Param_" & tIS)
  171.         gPluginsSideBand(i).VisInMenu = tIni.ReadInt("Plugin_SideBand", "VisInMenu_" & tIS, 1)
  172.     Next i
  173. Else
  174.     gPluginSBCnt = 0
  175.     ReDim gPluginsSideBand(0 To 0)
  176.     
  177. End If
  178. Call ReloadPluginData_SideBand
  179. End Sub
  180. Public Sub ReloadPluginData()
  181. Dim i&
  182. For i = 1 To gPluginCnt
  183.     With gPlugins(i)
  184.         gPlugins(i).Reload
  185.     End With
  186. Next i
  187. End Sub
  188. Public Sub ReloadPluginData_SideBand()
  189. Dim i&
  190. For i = 1 To gPluginSBCnt
  191.     With gPluginsSideBand(i)
  192.         gPluginsSideBand(i).Reload
  193.     End With
  194. Next i
  195. End Sub
  196. '加载插件菜单
  197. Public Sub LoadPluginsMenu()
  198. Dim i& ', ub&, tstr$
  199. Dim tIndex&
  200. Dim tAddedCount&
  201. If pMnu_Plugins Is Nothing Then
  202. Else
  203.     gODrawMenu.RemoveMulODMenu "plugin"
  204.     gODrawMenu.GetImgLstObj2("plugin2", True).Create 16, 16
  205.     
  206.     With pMnu_Plugins
  207.         .ClearItems
  208.         tAddedCount = 0
  209.         If gPluginCnt > 0 Then
  210.             For i = 1 To gPluginCnt
  211.                 If gPlugins(i).VisInMenu = 1 Then
  212.                     tAddedCount = tAddedCount + 1
  213.                     .Add gPlugins(i).Title, , i + IdOffset_Plugins
  214.                     
  215.                     
  216.                     tIndex = gODrawMenu.GetImgLstObj("plugin2").AddIcon(GetPluginIcon(gPlugins(i)), True)
  217.                     If tIndex >= 0 Then
  218.                         gODrawMenu.RstMenu .hWnd, i + IdOffset_Plugins, _
  219.                             , tIndex, , , 0, "plugin", "plugin2"
  220.                     Else
  221.                         gODrawMenu.RstMenu .hWnd, i + IdOffset_Plugins, , gPlugins(i).GetModuleTypeIndex, , , 0, "plugin", "plugin"
  222.                     End If
  223.                 End If
  224.             Next i
  225.             If tAddedCount = 0 Then
  226.                 .Add "(空)", pmsString Or pmsDisabled
  227.             End If
  228.         Else
  229.             .Add "(空)", pmsString Or pmsDisabled
  230.         End If
  231.         
  232.         .Add "", pmsSeparator
  233.         .Add "下载批量文件(flashget)...", , IDM_Main_OuterTools_FlashgetDownload
  234.     End With
  235. End If
  236. End Sub
  237. Private Function GetPluginIcon(vPObj As cPluginData) As Long
  238. Dim tModuleType&
  239. tModuleType = vPObj.GetModuleTypeIndex
  240. If vPObj.IconFile = vbNullString Then
  241.     Select Case tModuleType
  242.         Case 1, 2, 3
  243.             GetPluginIcon = ExtraIconVb(vPObj.Get_O_FileName, 0)
  244.         Case 0
  245.             GetPluginIcon = 0
  246.     End Select
  247. Else
  248. '    Debug.Print "iconfile", GetFileFolder(vPObj.FileName) & "" & vPObj.IconFile
  249.     GetPluginIcon = ExtraIconVb(vPObj.GetRealFileFolder & "" & vPObj.IconFile, 0)
  250. End If
  251. End Function
  252. '
  253. '---------------------------------------------------------------------------------------
  254. ' Procedure : LoadPlugins_SideBand
  255. ' DateTime  : 2005-5-29 21:06
  256. ' Author    : Lingll
  257. ' Purpose   : 加载边栏插件菜单,及装载dll
  258. '---------------------------------------------------------------------------------------
  259. Public Sub LoadPlugins_SideBand()
  260. Dim i& ', ub&, tstr$
  261. Dim tIndex&
  262. Dim tAddedCount&
  263. If pMnu_Plugins Is Nothing Then
  264. Else
  265.     With pMnu_ViewSideBand
  266.         .ClearItems
  267.         .Add "收藏夹(&F)", , IDM_Main_View_SideBand_Favorite
  268.         
  269.         If gPluginSBCnt > 0 Then
  270.             tAddedCount = 0
  271.             For i = 1 To gPluginSBCnt
  272.                 If gPluginsSideBand(i).VisInMenu = 1 Then
  273.                     gPluginsSideBand(i).LoadSideBand
  274.                     gPluginsSideBand(i).SetSite gMainForm.SideBandParentHwnd
  275.                     gMainForm.SetSidebandSize gPluginsSideBand(i)
  276.                     
  277.                     tAddedCount = tAddedCount + 1
  278.                     .Add gPluginsSideBand(i).Title, , i + IdOffset_ViewSideBand
  279.                 End If
  280.             Next i
  281.             If tAddedCount > 0 Then
  282.                 .Add2 "", 1, True, pmsSeparator
  283.             End If
  284.             
  285.         End If
  286.     End With
  287. End If
  288. End Sub
  289. 'Public Sub ReadPluginData(vFile$, vPlgDat As PluginData)
  290. 'Dim tIni As cINIFile
  291. '
  292. 'Set tIni = New cINIFile
  293. 'tIni.IniFile = vFile
  294. '
  295. 'vPlgDat.o_FileName = tIni.ReadKey("General", "FileName")
  296. 'vPlgDat.o_Title = tIni.ReadKey("General", "Title")
  297. 'vPlgDat.ModuleType = LCase(tIni.ReadKey("General", "ModuleType"))
  298. 'Select Case vPlgDat.ModuleType
  299. '    Case "script"
  300. '        Call Plugin_LoadScript(tIni, vPlgDat)
  301. '    Case "exe"
  302. '        vPlgDat.Data_Exe.Param = tIni.ReadKey("Exe", "Param")
  303. '    Case "com"
  304. '        vPlgDat.Data_Com.ClassID = tIni.ReadKey("Com", "ClassID")
  305. '        vPlgDat.Data_Com.ObjectName = tIni.ReadKey("Com", "ObjectName")
  306. '    Case "dll"
  307. '
  308. 'End Select
  309. '
  310. 'End Sub
  311. '
  312. '
  313. '
  314. ''读取脚本文件
  315. 'Private Sub Plugin_LoadScript(vIni As cINIFile, vPlgDat As PluginData)
  316. 'Dim tFN&
  317. '
  318. 'With vIni
  319. '    vPlgDat.Data_Script.Language = .ReadKey("Script", "Language", "javascript")
  320. '    vPlgDat.Data_Script.LoadedScript = False
  321. '    vPlgDat.Data_Script.RunType = Val(.ReadKey("Script", "RunType", "0"))
  322. '    vPlgDat.Data_Script.LoadAtExec = Val(.ReadKey("Script", "LoadAtExec", "0"))
  323. 'End With
  324. '
  325. 'If vPlgDat.Data_Script.LoadAtExec <> 0 Then
  326. '    tFN = FreeFile
  327. '    Open vPlgDat.o_FileName For Binary As tFN
  328. '        vPlgDat.Data_Script.Script = StrConv(InputB(LOF(tFN), tFN), vbUnicode)
  329. '    Close tFN
  330. '
  331. '    vPlgDat.Data_Script.LoadedScript = True
  332. 'End If
  333. '
  334. 'End Sub
  335. ''运行时才加载脚本文件的sub
  336. 'Public Sub LoadScriptFile2(nScript As ScriptData)
  337. 'On Error GoTo due
  338. 'Dim tFN&, tPos&
  339. 'Dim tstr$
  340. '
  341. 'tFN = FreeFile
  342. 'Open nScript.FileName For Binary As tFN
  343. '    tstr = StrConv(InputB(LOF(tFN), tFN), vbUnicode)
  344. 'Close tFN
  345. '
  346. 'tPos = InStr(1, tstr, ScriptInfoFlag_Script)
  347. 'If tPos > 0 Then
  348. '    nScript.Script = mID(tstr, tPos + Len(ScriptInfoFlag_Script))
  349. 'End If
  350. 'nScript.LoadedScript = True
  351. '
  352. 'Exit Sub
  353. '
  354. 'due:
  355. '    Reset
  356. '    nScript.LoadedScript = False
  357. '    nScript.Script = ""
  358. '    Debug.Print "loadscriptfile2", Err.Description
  359. 'End Sub