02:30h.
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
Sin dedicarle más de un minuto
(Puntos:2)( http://neu.loignoro.com/index.html | Última bitácora: Lunes, 07 Abril de 2008, 14:27h )
Solicitar tipos de plena confianza en un ensamblado [microsoft.com]
Tambien te recomiendo que sigas el link de conceptos abajo del todo para extender el tema.
Under a sea of dust lies a vast wealth of wisdom