Information générale
Catégorie:
COM/DCOM et OLE Automation
Titre:
Operacion Interface de Usuario no permitida
Tengo una clase asi:
DEFINE CLASS Proxy AS SESSION OLEPUBLIC
FUNCTION Do(cCommand,cProgramFile )
IF TYPE("cProgramFile")<>'L'
IF '.PRG' $ UPPER(cProgramFile )
SET PROCEDURE TO &cProgramFile
ENDIF
ENDIF
xRetVal = &cCommand
* Clear the PRG from memory so
* we can replace it later on.
IF TYPE("cProgramFile")<>'L'
SET PROCEDURE TO
CLEAR PROGRAM &cProgramFile
ENDIF
RETURN xRetVal
**-------------------------------------------
FUNCTION Init()
SET RESOURCE OFF
SET EXCLUSIVE OFF
SET CPDIALOG OFF
SET DELETED ON
SET SAFETY OFF
RETURN DODEFAULT()
**-------------------------------------------
ENDDEFINE
Un programa llamado OtrosProg.prog asi:
FUNCTION Mensaje
=MESSAGEBOX('Un COM+ MotorFox, en la Web.. este es un PROCEDURE')
RETURN
**--------------------------------------
FUNCTION xx
a=13
RETURN a
Si eres observador te daras cuenta que la clase lo unico que hace es ejecutar
cualquier funcion foxpro, o un procedimiento que este en alguna libreria espesificada en cProgramFile.
Bueno, cuando llamo a cualquier funcion (Mensaje(), o xx()), no hay problema.
es decir:
obj = newobject("Proxy","c:\tmp\proxy\proxy.prg") &&-- Creo la Intancia
?obj.do("xx()","c:\tmp\proxy\otrosprog.prg")
?obj.do("mensaje()","c:\tmp\proxy\otrosprog.prg")
release o
El problema esta cuando creo la DLL Multithread, y configuro el componente en Sistema operativo, me lanza un error al ajecutar la funcion mensaje() es decir:
?o.do("xx()","c:\tmp\proxy\otrosprog.prg") && bien!!
?o.do("mensaje()","c:\tmp\proxy\otrosprog.prg") && Mal y lanza el error
El error es:
"OLE IDispatch exeption code 2031 operacion de interface de usuario no permitida en este momento 2031"
Ayuda!!
Suivant
Répondre
Voir le fil de ce thread
Voir le fil de ce thread à partir de ce message seulement
Voir tous les messages de ce thread
Voir tous les messages de ce thread à partir de ce message seulement