我创建了一个非常简单的用户控件ActiveX,其中包含一个显示MessageBox的简单按钮。
namespace AxCPW
{
public partial class Test: UserControl, ITest
{
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Hello World");
}
}
}
接下来,我在asp.net项目中创建了一个网页,并在其中嵌入了我的usercontrol。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<object id="myControl" name="myControl" classid="AxCPW.dll#AxCPW.Test" width="100" height="100">
</object>
</body>
</html>
问题是我看到一个损坏的图像而不是我的UserControl,我已经在IE9上添加了我的localhost网络服务器可信站点但是没有用。
我知道ActiveX是一个过时的解决方案,但我需要使用第三部分sdk dll(通过USB与设备通信),我认为唯一可用的解决方案就是这个
答案 0 :(得分:0)
ActiveX是一种COM技术(本质上是“COM-in-a-pagepage”),并不了解.NET技术。
要使用在C#中开发的ActiveX控件,您需要expose the interface through COM。此外,您需要使用RegAsm
注册DLL,而不是gacutil
,因为您需要写入注册表的COM注册信息,而不是添加到GAC的程序集。最后,classid
属性必须是COM GUID,而不是“友好名称”。
如果您需要自动部署ActiveX控件,并使用GUID进行示例HTML,请查看我对Deploy C# ActiveX in a CAB for Internet Explorer use的回答。