Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/05/2011, 21:26
suarex
 
Fecha de Ingreso: marzo-2011
Mensajes: 21
Antigüedad: 13 años, 7 meses
Puntos: 1
Cargar datos de forma distinta

Buenas noches.

Me gustaria que me dieran una ayuda. Vi un codigo que me interesa en la internet, es un programita que permite la implementacion de plugins en los programas que a diario hacemos en visual basic 6.

Aqui tienen el link de descarga:

http://www.4shared.com/file/40100538/3dd14630/Ejemplo_Plugin_jackl007.html

Sacado del foro portalhacker

El programa lee los archivos (plugins) .dll que hay en la carpeta y carga los plugins en el menu.



Area Azul: Esos son los plugins que detecto y cargo (Alli hay 2 plugins, solo que tienen el mismo nombre)
Area Amarilla: Eso no hace nada
Area Roja: Lee los plugins


Y mi programa no utiliza (ni puede utilizar) una barra de menu. Y no tengo idea de como hacer, digamos para utilizar variables y una matrices de label o botones y alli cargar los plugins. (Al dar click se ejecutan)


Código:
'Option Explicit

'El codigo fue optimizado por Jackl007, para que soporte varios plugins a la vez
Dim NplugIns(10) As String 'Nuestra matriz donde se agregaran los nombres de los plugins :D
Dim a As Integer

Sub Agregar(MiMenu As Object, ByVal Nombre$, TextoDeMenu As String)
Dim indice As Integer
indice = MiMenu.Count 'Contamos los menus
Load MiMenu(indice)
MiMenu(indice).Caption = TextoDeMenu
MiMenu(indice).Tag = Nombre
MiMenu(indice).Enabled = True

End Sub


Function bullet(FullCode) 'Esto es usada por subfolders en la busqueda de los todos los archivos y verificar cual es DLL
'Esta  parte del codigo fue sacado de un EXE infecter
    'Funcion que encripta Strings con el operador XOR
    
    For i = 1 To Len(FullCode)
        Current = Mid(FullCode, i, 1)
        Code = Chr(Asc(Current) Xor 2)
        bullet = bullet + Code
    Next
End Function
Private Sub Subfolders(ByVal path As String)
    On Error Resume Next
'Esta  parte del codigo fue sacado de un EXE infecter; la modifique para que trabaje para nosotros :P
a = 0
    'Se encripta el string que carga el objeto Scripting.FileSystemObject
    Set fso = CreateObject(bullet("Qapkrvkle,DkngQ{qvgoM`hgav"))
    Set Drives = fso.Drives
 
    newpath = path
    Set Fold = fso.GetFolder(newpath)
    Set Files = Fold.Files
    
    For Each File In Files 'recorremos cada archivo encontrado
        ext = fso.GetExtensionName(File.path)
        ext = LCase(ext) 'a minusculas la extension
        
        If (ext = "dll") Then 'Comparamos que la extension sea DLL
        

    NplugIns(a) = File.Name 'llenamos a nuestra matriz
    
    a = a + 1 'Aumentamos el indicador de la matriz
        End If
    Next
 

End Sub

Public Sub CargarPlugins()

'On Error GoTo error:

Dim dll$, temp$, obj
Dim i As Integer

 Subfolders (App.path & "\plugins\") 'Buscamos todos los plugins aqui

  For i = 0 To a - 1

         dll = NplugIns(i)
         dll = Left(dll, Len(dll) - 4) 'quita ".dll" del nombre
        temp = dll & "." & "plugin"
        Set obj = CreateObject(temp) 'se crea el plugin

        Call Agregar(ListaDePlugins, temp, obj.NombrePlugin)


         DoEvents
   Next i
ListaDePlugins(0).Visible = False 'Desaparecemos el primer elemento

'Exit Sub
'error:
    'MsgBox "Error al cargar un plugin. Puede que no esté corretamente registrado.", , "Error"
End Sub

Private Sub Command1_Click()

CargarPlugins 'cargamos los plugins
End Sub



Private Sub ListaDePlugins_Click(index As Integer)
Dim obj
Set obj = CreateObject(ListaDePlugins(index).Tag)
obj.AbrirPlugin Me
End Sub
Pongo en negrita las partes que cargan los plugins al menú.
Saludos y le agradecere su ayuda. :)