Código:
Option Explicit
Public Sub AñadirAlMenu(ByVal Nombre$, ByVal Titulo$)
Dim index As Integer
If ListaDePlugins(0).Enabled = True Then
index = index + 1
Load ListaDePlugins(index)
Else
ListaDePlugins(0).Enabled = True
End If
ListaDePlugins(index).Caption = Titulo
ListaDePlugins(index).Tag = Nombre
End Sub
Public Sub CargarPlugins()
On Error GoTo error:
Dim dll$, temp$, obj
dll = Dir("C:\Windows\System32\*.dll", vbNormal) 'se obtiene la dll
Do Until dll = ""
dll = Left(dll, Len(dll) - 4) 'quita ".dll" del nombre
temp = dll & "." & "plugin"
Set obj = CreateObject(temp) 'se crea el plugin
AñadirAlMenu temp, obj.NombrePlugin 'se añade el plugin al menu
dll = Dir()
Loop
Exit Sub
error:
MsgBox "Error al cargar un plugin. Puede que no esté corretamente registrado.", , "Error"
End Sub
Private Sub ListaDePlugins_Click(index As Integer)
Dim obj
Set obj = CreateObject(ListaDePlugins(index).Tag)
obj.AbrirPlugin Me
End Sub
Private Sub mnuplugins_Click()
CargarPlugins 'se cargan los plugins que están el el directorio plugins.
End Sub
caption: plugins
name: mnuplugins
->caption lala
->name: ListaDePlugins (con index 0 para crear una matriz)
y este es el code de la dll a crear con vb esto es en el form1 lo otro va en un modulo de clase llamado plugin
Código:
Public miFormularioPadre As Form 'el manejador del formulario
Option Explicit
Private Sub Command1_Click()
miFormularioPadre.Caption = Text1.Text
End Sub
Private Sub Command2_Click()
miFormularioPadre.Text1.Text = miFormularioPadre.Text1 + Text2.Text
End Sub
Private Sub Command4_Click()
MsgBox miFormularioPadre.Text1.Text, vbInformation, "From Plugin"
End Sub
Código:
Option Explicit
Public Property Get NombrePlugin() As String 'El nombre del plugin
NombrePlugin = "Este es miplugin"
End Property
Public Sub AbrirPlugin(Form As Object)
Set Form1.miFormularioPadre = Form
Form1.Show
End Sub
bueno al compilar la dll la ponemos en system32 y la regsitramos asi en MS-DOS o en cmd o en ejecutar como quieran ponen regsvr32 miplugin.dll ese nombre xq asi lo compile miplugin.dll
y si o si al registrarla tiene q estar en system32 al dll (si me equivoco corijanmen)
ese code no me fuciona bien y yo probe hacer esto
Código:
Public Sub CargarPlugins()
On Error GoTo error:
Dim dll$, temp$, obj
open "C:\dll.txt" for input as #1
Do While Not EOF(1)
Line Input #1, lala
dll = Left(lala, Len(lala) - 4) 'quita ".dll" del nombre
temp = dll & "." & "plugin"
Set obj = CreateObject(temp) 'se crea el plugin
AñadirAlMenu temp, obj.NombrePlugin 'se añade el plugin al menu
Loop
Exit Sub
error:
MsgBox "Error al cargar un plugin. Puede que no esté corretamente registrado.", , "Error"
End Sub
bueno en C:\dll.txt estan los nombres de las dll entonces las saca de a una pero no sirve ninguno de los 2 ejemplos espero q alguien me ayude y perdon x escribir tanto.