Lio con CreateObject / GetObject... AYUDA POR FAVOR!

24/07/2006 - 01:44 por sierracebrian | Informe spam
Hola y de entrada gracias por atender...
El asunto: tengo un componente ActiveX DLL que esta declarado dentro de
Global.asa, este componente tiene 8 clases PublicNotCreatable y una
MultiUse (elemento de mayor jerarquia en mi modelo) Esta clase
instancia las demas clases y estas penden como propiedades de la clase
de primer nivel de modo que asi se accesen; todo ha ido de lujo, estas
clases hacen cosas tan variadas como desde el acceso a datos, gestion
de coneccion con soporte de transacciones, ejecucion de SQL statements
Update, Select, etc, tambien tengo clases que usan automatizacion de
Word (Word 11) y tengo subrutinas para subir archivo, abrirlo,
guardarlo como, hacer busqueda/sustitucion dentro del documento y
guardado. Tambien tengo otra clase que instancia otros componentes
referenciados para parsear archivos .eml y enviarlos (relay) a mi
servidor de email como MIME S/MIME etc, en realidad, lo que quiero
transmitir es que mi nivel es avanzado, soy muy entendido en VB6; y
todo funciona perfectamente EXCEPTO una clase que usa faxcomex.dll para
envio y gestion de trabajos de fax. Esta clase en modo depuracion
funciona perfectamente bien, le son pasados parametros, que son
montados en los objetos de la dll de automatizacion de fax para winxp
pro, los envia, anexa el IdJob a una base de datos, etc. Incluso tengo
un componenete que funciona fuera de proceso que mediante un timer se
conecta periodicamente al servidor de fax y recupera el status de cada
FaxJob para actualizar el resultado en la base de datos, etc. Todo
funciona de lujo... hasta que lo ejecuto en modo de ejecucion (no
depuracion) y mi clase que automatiza el envio de faxes, devuelve un
mensaje criptico (Operation Failed) he movido todas las propiedades de
seguridad, he agregado a cuenta de invitado de internet
(IUSR_NOMBRESERVIDOR) a los permisos de la impresora de fax, y nada!
todo falla!, he incluso modificado las propiedades del directorio
virtual sobre el que se ejecuta mi aplicacion web para funcionar con la
seguridad integrada de windows y me pide mi username y password de
windows, la aplicacion funciona como se espera hasta el momento de
mandar el Fax (m_Fax.Subit o M_Fax.ConnectedSubmit) ambos metodos
fallan, entonces he creado un componenete fuera de proceso ActiveX exe
que instancia una clase y la registra mediante Win32API con un par de
funciones 'magicas' que agregan mi instancia de clase al Registered
Object Table OLEREF_WEAK para lograr hacer uso de GetObject (algo
'imposible desde VB6 supuestamente) esto funciona PERFECTO en modo de
depuracion y en modo de ejecucion con clientes windows (no web) toda la
aplicacion funciona perfecto en modo de ejecucion EXCEPTO este modulo
de clase cuando el cliente esta ejecutando mediante IIS 5.1, devuelve
el clasico Error de VB 427, el objeto no puede crear 'GetObject'. La
conclusion: no puedo mandar imprimir un documento a mi fax ni por
patada de mula! Incluso he creado un std exe y desde el DLL que se
instancia desde Global.asa intento ejecutarlo mediante ShellExecute con
parametros para que sea este std exe quien envie el Fax y nada tampoco!
estoy frustradisimo con esto! Su ayuda es de mucho interes y
urgencia... pueden pedirme a sierracebrian@gmail.com y les dare un link
a el codigo fuente para mayor referencia
 

Leer las respuestas

#1 Matías Iacono
25/07/2006 - 15:45 | Informe spam
Bueno, creo que no quedó un punto sin tocar :)

Si no son problemas de permisos, y en depuración te funciona todo bien, sin
ver el código fuente (siempre y cuando sea esta posibilidad), podría suceder
lo mismo que cuando usas WINSOCK desde VB6, donde si quieres enviar
múltiples mensajes en un bucle, solo llega el último, ya que entre medio hay
que meterle un DoEvents para que se ejecuten otros procesos.

Esto lo comento debido a que por lo general, cuando uno depura este tipo de
aplicaciones, lo hace paso a paso, dandole el tiempo necesario a los
controles para que procesen toda la información.

Se que posiblemente no tenga nada que ver, pero por lo que describes, haz
hecho practicamente todas las cosas que te podría haber dicho que hagas :)

Solo me quedó eso en el tintero. En todo caso, si me pasas el link del
código, para darle una mirada y ver si descubro algo más.

Saludos

Matías Iacono
Microsoft MVP ASP/ASP.net
Orador INETA
escribió en el mensaje
news:
Hola y de entrada gracias por atender...
El asunto: tengo un componente ActiveX DLL que esta declarado dentro de
Global.asa, este componente tiene 8 clases PublicNotCreatable y una
MultiUse (elemento de mayor jerarquia en mi modelo) Esta clase
instancia las demas clases y estas penden como propiedades de la clase
de primer nivel de modo que asi se accesen; todo ha ido de lujo, estas
clases hacen cosas tan variadas como desde el acceso a datos, gestion
de coneccion con soporte de transacciones, ejecucion de SQL statements
Update, Select, etc, tambien tengo clases que usan automatizacion de
Word (Word 11) y tengo subrutinas para subir archivo, abrirlo,
guardarlo como, hacer busqueda/sustitucion dentro del documento y
guardado. Tambien tengo otra clase que instancia otros componentes
referenciados para parsear archivos .eml y enviarlos (relay) a mi
servidor de email como MIME S/MIME etc, en realidad, lo que quiero
transmitir es que mi nivel es avanzado, soy muy entendido en VB6; y
todo funciona perfectamente EXCEPTO una clase que usa faxcomex.dll para
envio y gestion de trabajos de fax. Esta clase en modo depuracion
funciona perfectamente bien, le son pasados parametros, que son
montados en los objetos de la dll de automatizacion de fax para winxp
pro, los envia, anexa el IdJob a una base de datos, etc. Incluso tengo
un componenete que funciona fuera de proceso que mediante un timer se
conecta periodicamente al servidor de fax y recupera el status de cada
FaxJob para actualizar el resultado en la base de datos, etc. Todo
funciona de lujo... hasta que lo ejecuto en modo de ejecucion (no
depuracion) y mi clase que automatiza el envio de faxes, devuelve un
mensaje criptico (Operation Failed) he movido todas las propiedades de
seguridad, he agregado a cuenta de invitado de internet
(IUSR_NOMBRESERVIDOR) a los permisos de la impresora de fax, y nada!
todo falla!, he incluso modificado las propiedades del directorio
virtual sobre el que se ejecuta mi aplicacion web para funcionar con la
seguridad integrada de windows y me pide mi username y password de
windows, la aplicacion funciona como se espera hasta el momento de
mandar el Fax (m_Fax.Subit o M_Fax.ConnectedSubmit) ambos metodos
fallan, entonces he creado un componenete fuera de proceso ActiveX exe
que instancia una clase y la registra mediante Win32API con un par de
funciones 'magicas' que agregan mi instancia de clase al Registered
Object Table OLEREF_WEAK para lograr hacer uso de GetObject (algo
'imposible desde VB6 supuestamente) esto funciona PERFECTO en modo de
depuracion y en modo de ejecucion con clientes windows (no web) toda la
aplicacion funciona perfecto en modo de ejecucion EXCEPTO este modulo
de clase cuando el cliente esta ejecutando mediante IIS 5.1, devuelve
el clasico Error de VB 427, el objeto no puede crear 'GetObject'. La
conclusion: no puedo mandar imprimir un documento a mi fax ni por
patada de mula! Incluso he creado un std exe y desde el DLL que se
instancia desde Global.asa intento ejecutarlo mediante ShellExecute con
parametros para que sea este std exe quien envie el Fax y nada tampoco!
estoy frustradisimo con esto! Su ayuda es de mucho interes y
urgencia... pueden pedirme a y les dare un link
a el codigo fuente para mayor referencia

Preguntas similares