Add-In Elemental
Para Principiantes (o Programadores que no estén dispuestos a romperse el coco con esto...)

 

Fecha: 04/07/98 (publicado 08/07/98)
Autor: Guillermo Sieder


Creo que no es muy usual que a uno se le ocurra hacer un Add-Inn, lo mismo pensé en su momento del truco de hacer desaparecer la barra de tareas hasta que me lo pidieron en un Programa de Autocapacitación...

Por una de esas cosas, mi VB está en inglés, por lo que describo los menúes y opciones en esa lengua y, entre paréntesis, lo que supongo debiera decir el que está en castellano.

  • Cree un Proyecto nuevo en VB para 16 bits.
  • Haga click en el menú Tools (Herramientas) y elija References (Referencias). Encuentre la casilla Microsoft Visual Basic Development Environment, si no está seleccionada, hágalo.
  • Haga click en el menú Tools (Herramientas) y elija Options (Opciones) y vea si en el folder Environment (Entorno) está chequeada la opción Require Variable Declaration (Declaración de Variables Requerida), si no es así, hagalo.
  • Haga click en el menú Insert (Insertar) y elija Class Module (Módulo de Clases). Pulse F4 para ver las propiedades, cambie Instancing a 2-Creatable MultiUse, Name a MsgWiz16 y Public a True.
  • Haga click en el menú Insert (Insertar) y elija Module.
  • Abra el código de su módulo y escriba (o mejor copie y pegue):

#If Win16 Then

Declare Function OSWritePrivateProfileString% Lib "KERNEL" Alias "WritePrivateProfileString" (ByVal AppName$, ByVal KeyName$, ByVal keydefault$, ByVal FileName$)

Declare Function OSGetPrivateProfileString% Lib "KERNEL" Alias "GetPrivateProfileString" (ByVal AppName$, ByVal KeyName$, ByVal keydefault$, ByVal ReturnString$, ByVal NumBytes As Integer, ByVal FileName$)

#ElseIf Win32 Then

Declare Function OSWritePrivateProfileString% Lib "Kernel32" Alias "WritePrivateProfileStringA" (ByVal AppName$, ByVal KeyName$, ByVal keydefault$, ByVal FileName$)

Declare Function OSGetPrivateProfileString% Lib "Kernel32" Alias "GetPrivateProfileStringA" (ByVal AppName$, ByVal KeyName$, ByVal keydefault$, ByVal ReturnString$, ByVal NumBytes As Integer, ByVal FileName$)

#End If

Sub Main

Dim Ret As Variant

Dim RetStr As String

Const BufSize = 255

#If Win16 Then

Const Section = "Add-Ins16"

#ElseIf Win32 Then

Const Section = "Add-Ins32"

#End If

RetStr = Space(BufSize)

Ret = OSGetPrivateProfileString(Section, "MsgWiz16.WizardDelGuille", "NotFound", RetStr, BufSize, "VB.INI")

RetStr = Left(RetStr, Ret)

If RetStr = "NotFound" Then

OSWritePrivateProfileString Section, "MsgWiz16.WizardDelGuille", "0", "VB.INI"

End If

End Sub

Puede que esté de mas decirlo pero...: "Los párrafos que comienzan con Declare , deben escribirse en una sola línea"

  • Haga click en Tools (Herramientas) y elija Options (Opciones), en el folder Project encontrará un cuadro de lista llamado StartUp Form (FormularioInicial), elija Sub Main.
  • Ahora escriba en el cuadro de texto Proyect Name (Nombre del Proyecto) la palabra MsgWiz16.
  • En el frame StartMode (Modo de Inicio) haga click en OLE Server (Servidor OLE).
  • En el folder Advanced (Avanzado) encuentre el frame llamado Error Trapping (Intercepción de Errores) y seleccione Break in Class Module (Parada en Módulo de clases).
  • Guarde el proyecto como MsgWiz16.vbp
  • Edite MsgWiz16.cls y escriba en General - Declarations (Declaraciones):

Private ThisInstance As VBIDE.Application

Private AddInMenuLine As VBIDE.MenuLine

Private hMenuLine As Long

Dim AddInItems As Object

Dim DFDMenu As Object

Dim ConnectID As Long

Public Sub AfterClick()

'Aquí está la parte interesante:

'Estas son las instrucciones que se ejecutarán cuando el usuario decida

'poner en funcionamiento nuestro Add-Inn.

'En el caso del programa del Guille escribimos:

x = Shell("c:\guille\MsgWiz.exe", 1)

'donde evidentemente lo único que hago es tener en cuenta es el path

'completo de la aplicación.

'Pero supongamos que el mismo programa MsgWiz fuera un Add-Inn, lo que

'tendríamos que escribir es:

'Form1.Show vbModal

'donde Form1 es el formulario principal de la Aplicación del Guille.

End Sub

Public Sub ConnectAddIn(VBInst As VBIDE.Application)

On Error GoTo error_handler

Set gobjIDEAppInst = VBInst

Set AddInItems = VBInst.AddInMenu.MenuItems

Set DFDMenu = AddInItems.Add("El MsgWizzard del Guille")

ConnectID = DFDMenu.ConnectEvents(Me)

Exit Sub

error_handler:

MsgBox Err.Description

Exit Sub

End Sub

  • Compile el Programa como MsgWiz16.exe y hágalo correr. Aparentemente nada sucede pero, en realidad, acaba de registrar su nuevo Add-Inn (Complemento) en VB para 16 bits. Haga correr VB y haga click en el menú Add-Ins (Complementos), elija Add-In Manager (Administrador de Complementos), si todo ha salido bien, verá una lista de los que ya tenga instalados y el nuevo: MsgWiz16.WizardDelGuille con una casilla sin seleccionar al lado. Selecciónela y acepte este cambio. Vuelva a hacer click en el menú Add-Ins (Complementos), ahora aparece una opción mas que dice: El MsgWizzard del Guille.
  • Para hacer un nuevo proyecto lo que se debe cambiar es: El nombre del Proyecto . Donde diga: "MsgWiz16", el nuevo nombre del proyecto. Donde diga : "WizardDelGuille", la descripción que aparecerá en el administardor de Add-Ins (Complementos). Donde diga: "El MsgWizzard del Guille", el texto que aparecerá en el menú de Add-Ins (Complementos).
  • Si lo que quiere es un Add-In (Complemento) para 32 bits, siga todos los pasos pero con VB 32 bits.
  • Si realmente alguien se toma en serio esto, recomiendo leer atentamente los documentos que están en el sitio y los ejemplos que vienen en VB en los subdirectorios Align, Datawiz y Spy (ignoro los nombre en español).

Guillermo Sieder

Bahía Blanca

Argentina

Sieder@usa.net


ir al índice

 Listados del AddIn para VB4-16 bits. ( 8.20 KB)