Historias
Slashboxes
Comentarios

Login Barrapunto

Login

[ Crear nueva cuenta ]

lopez (19865)

lopez
  (email no mostrado públicam.)
http://cerocoma.blogspot.com/

Down Kill Up Publicidad

Bitácora de lopez (19865)

Domingo, 14 de Octubre 2007

.Net - LLamadores de confianza parcial ??

02:30h.
Bitácoras
Hola, os pongo en situación:

No conozco apenas nada de .Net (la sintaxis y ni eso). Recordé que hacía tiempo había enredado con los add-in (http://msdn2.microsoft.com/en-us/library/aa905655 .aspx) de msn messenger, y como mirando por System me encontré con System.Speech, he ido a hacerme uno que leyese lo que te escriben, pero me he topado con un problema. Al parecer no se pueden crear objetos, en cuanto llegaba a un new cascaba al cargar, así que pase la carga a un modulo, y por fin he visto lo que pasa, y aunque a veces he oido algo sobre esto, se me escapa bastante.

Al parecer la interfaz IMessengerAddIn requiere un nivel de seguridad de los objetos para que toda la aplicación siga siendo de confianza (creo que es algo así), pero primero no entiendo como una clase de System puede no ser de confianza, y no se como hacer que la llamada lo sea. A lo mejor no se puede hacer, o no es esto lo que pasa.

El error que da es: "Ese ensamblado no permite llamadores de confianza parcial"

Por si alguien quiere hacer la prueba, estoy usando VB Express 2005, el espacio de nombres del proyecto es LectorWMLAddIn, y el compilado tiene que llamarse LectorWMLAddIn.AddIn.dll y tener junto a el la librería MessengerClient.dll que está en la carpeta del Messenger.

EDITO: He subido el proyecto: http://archivos.cerocoma.googlepages.com/LectorWLM AddIn.rar

AddIn.vb:
--------------------------
Public Class AddIn
        Implements IMessengerAddIn

        Private WithEvents MiClienteMSN As MessengerClient
        Public WithEvents MiSintetizador As System.Speech.Synthesis.SpeechSynthesizer

        Sub Initialize(ByVal ElMessengerClient As MessengerClient) Implements IMessengerAddIn.Initialize
                Try
                        MiClienteMSN = ElMessengerClient
                        'MiSintetizador = New System.Speech.Synthesis.SpeechSynthesizer
                        cargar(Me)
                Catch
                        MsgBox("Se ha producido un error " & Err.Description)
                End Try

        End Sub

        Private Sub MiClienteMSN_IncomingTextMessage(ByVal sender As Object, ByVal e As Microsoft.Messenger.IncomingTextMessageEventArgs) Handles MiClienteMSN.IncomingTextMessage
                'MiSintetizador.SpeakAsync(e.TextMessage)
                'MsgBox(e.TextMessage)
        End Sub

End Class
---------------------

Module1.bas
-------------------
Module Module1
        Friend Sub cargar(ByVal obj As Object)
                obj.misintetizador = New SpeechSynthesizer
        End Sub
End Module
-------------------

Por cierto hay que tener en el registro la siguiente entrada:

[HKEY_CURRENT_USER\Software\Microsoft\MSNMessenger ]
"AddInFeatureEnabled"=dword:00000001

Ya os digo que no tengo ni idea de esto de la seguridad de los componenetes, así que cualquier luz será de agradecer.

Muchas Gracias, un saludo

EDITO: he encontrado la solución, como ya dije anoche en un comentario, pero por si no llegais hasta ahi, había que firmarlo y añadirlo al gac. Mas detallado en http://cerocoma.blogspot.com/2007/10/addins-para-m sn-messenger.html
Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.