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

[email protected]


ir al índice

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