silverlight如何实现调用com组件的事件?
silverlight怎么实现调用com组件的事件??
我用c#编写了一个com组件,代码如下
namespace MyClient
{
[ComVisible(true)]
[Guid("C7A44B0B-7028-4173-96B8-885CD4594C97")]
public interface IRXCOM
{
void Send(byte[] array, int offset, int count);
string ceshi();
void Dispose();
}
[ComVisible(true)]
[Guid("47F8B5F9-9220-473E-B133-467327877443")]
[ProgId("MyClient.MyClientHelp")]
public class MyClientHelp : IDisposable, IRXCOM
{
public delegate void ReturnHandler(byte[] array, int offset, int count);
public event ReturnHandler Receive;
public string ceshi()
{
return "成功了";
}
public void Send(byte[] array, int offset, int count)
{
Receive(array,offset,count);
}
}
}
在silverlight 端用
dynamic SensorManager = AutomationFactory.CreateObject("MyClient.MyClientHelp");
SensorManager .ceshi();
能够返回“成功了”;也就是说方法能实现调用;
但是SensorManager.Receive+=Receive;
这样去注册事件报错, silverlight要怎么去注册com组件里的事件,还有com里用不用定义事件的接口,该怎么写。
网上查了些例子,看的不死很明白,求大神们指点下,不胜感激。
还有我看网上说用tlbimp.exe 可以把组件编译成可引用的dll。这个tlbimp.exe到底怎么用啊,我用的是vs2012,里面没找到tlbimp这个应用程序,在c盘搜出几个,把dll也放到盘符下了,tlbimp.exe 打开就关闭了,不让输入命令。有没有知道怎么用的啊
------解决方案--------------------
sl的安全设置非常苛刻 你想*调用你的组件 应该无解
------解决方案--------------------
楼主看看这里有没有帮助:http://www.redmountainsw.com/wordpress/2011/06/08/silverlight-4-com-interop-raising-events-on-the-correct-thread/
我用c#编写了一个com组件,代码如下
namespace MyClient
{
[ComVisible(true)]
[Guid("C7A44B0B-7028-4173-96B8-885CD4594C97")]
public interface IRXCOM
{
void Send(byte[] array, int offset, int count);
string ceshi();
void Dispose();
}
[ComVisible(true)]
[Guid("47F8B5F9-9220-473E-B133-467327877443")]
[ProgId("MyClient.MyClientHelp")]
public class MyClientHelp : IDisposable, IRXCOM
{
public delegate void ReturnHandler(byte[] array, int offset, int count);
public event ReturnHandler Receive;
public string ceshi()
{
return "成功了";
}
public void Send(byte[] array, int offset, int count)
{
Receive(array,offset,count);
}
}
}
在silverlight 端用
dynamic SensorManager = AutomationFactory.CreateObject("MyClient.MyClientHelp");
SensorManager .ceshi();
能够返回“成功了”;也就是说方法能实现调用;
但是SensorManager.Receive+=Receive;
这样去注册事件报错, silverlight要怎么去注册com组件里的事件,还有com里用不用定义事件的接口,该怎么写。
网上查了些例子,看的不死很明白,求大神们指点下,不胜感激。
还有我看网上说用tlbimp.exe 可以把组件编译成可引用的dll。这个tlbimp.exe到底怎么用啊,我用的是vs2012,里面没找到tlbimp这个应用程序,在c盘搜出几个,把dll也放到盘符下了,tlbimp.exe 打开就关闭了,不让输入命令。有没有知道怎么用的啊
------解决方案--------------------
sl的安全设置非常苛刻 你想*调用你的组件 应该无解
------解决方案--------------------
楼主看看这里有没有帮助:http://www.redmountainsw.com/wordpress/2011/06/08/silverlight-4-com-interop-raising-events-on-the-correct-thread/