Perdon. Pero trabajar bien no significa ser un puritano.

From: [EMAIL PROTECTED]: [EMAIL PROTECTED]: [vbusers] DLLDate: Thu, 10 May 2007 
15:39:15 -0300








Bueno, no soy un puritano en ningún aspecto de mi vida y no voy a comenzar hoy… 
así que hablemos de hacer “chanchadas”!
 
Como dice Marcelo, adentro del proyecto DLL ActiveX podés incluir Forms, 
adentro de esos Forms podés incluir Controles, y luego desde cualquier módulo 
de Clase podés invocar a esos Controles que hayas ubicado en cualquiera de los 
Forms. Los más “puritanos” dirán que debés crear una instancia del form, 
control, etceetc… pero no hay ningún inconveniente si decidís, desde tu módulo 
de clase, hacer algo como esto:
 
Public Function TuMetodo()
Form1.MSComm1.CommPort = 1
            Form1.MSComm1.PortOpen = True
            ….
End Function
 
 Pero si es un inconveniente en este control, en particular, porque tenés que 
“esperar” a que ocurra un evento, y ese evento queda en este caso “pegado” al 
Form en el que incluiste el control. Para lo cual deberías programar manejador 
del evento (en el Form) la generación de un NUEVO evento que sí pueda ser 
manejado desde la clase. Y entonces sí en la clase creas un nuevo “objeto” del 
tipo Form “WithEvents”
 
Adjunto un ZIP con un mínimo ejemplo.
 
Cristian
 
 
 




De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Carlos Bernardo 
MaggiottiEnviado el: Jueves, 10 de Mayo de 2007 09:46Para: vbusers List 
MemberAsunto: [vbusers] DLL
 
Bueno... Lo que vas a tener que hacer entonces es: 1 - Reemplazar el control 
msComm que venias usando por las funciones API de llamadas a puertos. 2 - 
Exponer los metodos (Subs y Functions) para que tu Dll ejecute las acciones que 
realizaba tu msComm. Y las propiedades (Properties Get-Let) para poder setearle 
los parametros que el msComm esperaba. De todos modos, hay una manera de crear 
un componente msComm "on the fly" sin necesidad de tener uno pegado en un form, 
esto por codigo obviamente. Seria una solucion media chancha pero resolveria tu 
problema en forma rapida. Si optas por resolverlo de todos modos mediante API 
de Windows de llamadas a puertos fijate si encontras algo en: www.allapi.net/ 
http://vbasic.astalaweb.com/API/1_API.asp Muy bueno lo del grupo de proyectos. 
Desarrollalo asi que te va a despejar mucho las dudas al poder debugear tu 
componente. Sino, create un proyecto exe de testing para poder asi debugear tu 
nuevo componente (Obviamente dentro del mismo grupo de proyectos).Saludos y 
espero que te sirva...CarlosMag



From: [EMAIL PROTECTED]: [EMAIL PROTECTED]: [vbusers] DLLDate: Wed, 9 May 2007 
21:01:09 -0300

Lo que necesito es generar una dll que escuche el puerto serie y devuelva el 
string correspondiente. La idea es que esa dll pueda ser usada en otros 
proyectos.
Yo utilizo para eso en mi proyecto el control mscomm pero como lo meto en una 
dll ese es el tema.
Muchas gracias
 
 




De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Cristian C. 
BittelEnviado el: miércoles, 09 de mayo de 2007 19:45Para: vbusers List 
MemberAsunto: [vbusers] DLL
 
Muy buenos consejos de Carlos… 
 
Desde dónde la estás usando a la DLL generada? Es un proyecto tuyo también? 
Podés crear un GRUPO de proyectos que incluya la DLL y el EXE desde el que lo 
estás llamando, así podés hacer DEBUG.
 
Si no tenés acceso al EXE que usa tu DLL, te aconsejo que te hagas uno de 
prueba.
 
Generalmente ese error se debe a no estar correctamente registrada. Si no 
estableciste la “Compatibilidad” que dijo Carlos, cada vez que recompilás tenés 
que RE-registrar tu DLL. Si lo haces con compatibilidad, con sólo registrar una 
vez debería alcanzar mientras no cambies la “firma” de tus métodos. Pero VB6 
hace la registración por vos en el ambiente de desarrollo, así que si ese error 
lo tenés en desarrollo, el problema es otro… revisá tener los métodos que 
deseas exponer declarados como “Public”
 
Cristian.
 
 




De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Carlos Bernardo 
MaggiottiEnviado el: Martes, 08 de Mayo de 2007 15:11Para: vbusers List 
MemberAsunto: [vbusers] DLL
 
Hola...Quiza esto no resuelva tu problema actual, pero me acorde de un par de 
tips ActivexDll 1 - Es mas recomendable instanciar como... Dim oDll as 
TuDll.ClaseSet oDll = new TuDll.Clase 2 - Desarrollá tus proyectos Dll con 
compatibilidad binaria. Eso esta entre las opciones de compilación del 
proyecto. Saludos y espero que te sirva...CarlosMag> From: [EMAIL PROTECTED]> 
To: [email protected]> Subject: [vbusers] DLL> Date: Tue, 8 May 2007 12:31:14 
-0300> > He creado un proyecto dll, automáticamente me crea una clase, en los> 
ejemplos que he buscado en Internet me dicen que cree un modulo.> Hice los 
procedimientos en las clases y los invoco del codigo> Genere la dll> Cuando la 
voy a usar me dice que no encuentra el punto de entrada x, es> decir el nombre 
del procedimiento.> Alguna pista???> Muchas gracias desde ya.> > > -----Mensaje 
original-----> De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de 
Cristian C.> Bittel> Enviado el: lunes, 07 de mayo de 2007 10:39> Para: vbusers 
List Member> Asunto: [vbusers] DLL> > La principal diferencia entre un EXE y 
una DLL es que esta no tiene un único> punto de acceso/inicio.> > Generalmente 
en un EXE tenés una función Sub Main(). En la DLL no hay un> único Sub Main, 
sino que cada método Function/Sub que vos definas como> "Public" dentro de un 
módulo de Clase va a servir como punto de inicio y fin> de tu aplicación.> > 
Para iniciar el proyecto tenés que seleccionar un nuevo proyecto del tipo> DLL 
ActiveX. Luego agregás módulos de Clases, en los que vas a poner tus> métodos 
Public, en esos métodos públicos tenés que simular lo que sería el> Sub Main de 
un EXE. Desde ahí podés llamar a otros métodos del mismo módulo> o de módulos 
estándar o inclusive levantar formularios.> > Espero te sirva de ayuda para ir 
comenzando. Si tenés más dudas, seguí> consultando.> > Cristian.> > > > 
-----Mensaje original-----> De: [email protected] [mailto:[EMAIL PROTECTED] En 
nombre de Jesús dos> Santos> Enviado el: Viernes, 04 de Mayo de 2007 10:01> 
Para: vbusers List Member> Asunto: [vbusers] DLL> > Lista, necesito hacer una 
dll que consulte un puerto serie y nunca hice una> dell, ha manejado puerto 
serie con el control mscomm, pero no una dll.> Alguien puede darme alguna 
pista?> > Desde ya muchas gracias.> > > > > > No virus found in this incoming 
message.> Checked by AVG Free Edition. > Version: 7.5.467 / Virus Database: 
269.6.5/792 - Release Date: 06/05/2007> 21:01> > > No virus found in this 
outgoing message.> Checked by AVG Free Edition. > Version: 7.5.467 / Virus 
Database: 269.6.5/792 - Release Date: 06/05/2007> 21:01> > > > > __________ 
Información de NOD32, revisión 2248 (20070507) __________> > Este mensaje ha 
sido analizado con NOD32 antivirus system> http://www.nod32.com> > > 



Envía mensajes de correo electrónico directamente a tu blog con MSN. Carga 
chistes, fotografías y muchas otras cosas. Es gratis.
__________ Información de NOD32, revisión 2250 (20070508) __________Este 
mensaje ha sido analizado con NOD32 antivirus systemhttp://www.nod32.com
No virus found in this incoming message.Checked by AVG Free Edition.Version: 
7.5.467 / Virus Database: 269.6.6/795 - Release Date: 09/05/2007 15:07No virus 
found in this outgoing message.Checked by AVG Free Edition.Version: 7.5.467 / 
Virus Database: 269.6.6/795 - Release Date: 09/05/2007 15:07
 



Descubre Live.com - tu propia página de inicio, personalizada para ver 
rápidamente todo lo que te interesa en un mismo sitio. todo en el mismo sitio.
No virus found in this incoming message.Checked by AVG Free Edition.Version: 
7.5.467 / Virus Database: 269.6.6/795 - Release Date: 09/05/2007 15:07
No virus found in this outgoing message.Checked by AVG Free Edition.Version: 
7.5.467 / Virus Database: 269.6.6/795 - Release Date: 09/05/2007 15:07

_________________________________________________________________
Descubre Live.com - tu mundo en línea reunido: noticias, deportes, el tiempo, y 
mucho más.
http://www.live.com/getstarted

Responder a