简单的ActiveX 控件
不少人发消息问我 activex 控件的问题,传统的activex 就不提了,说下.net 上的简单应用吧(高级的我也不太了解,有不对请指正):
建一个 classlib,内容如下:
//Class1.cs:
using System;
namespace activex_html
{
public class Class1
{
public string mod(object o) { //此例为方法
return System.Environment.OSVersion.ToString();
}
}
}
编译成activex_html.dll,放到WEB 目录(与下面网页同等目录)下
写一个网页,内容如下:
<object id="myactivex" classid="http:activex_html.dll#activex_html.Class1"></object>
<script>
function c(obj){
document.all['t'].innerHTML = document.all['myactivex'].mod();
}
</script>
<body onload="c(this)">
<span id="t">?1</span>
</body>
浏览一下就知道了
要说明的是,.net 上的activex 是基于.net framework管理的,而不是IE 的安全或者系统的策略来管理,所以默认它有很高的安全限制,比如:
return System.Environment.UserName;
这就不被允许,而.net 要求你必须对它进行安全和权限配置才允许你执行和访问受限的资源。
上面的问题是指外网访问,不知道的朋友注意一下:
用机器名和网卡IP 访问是不同的,因为机器名访问是属于本地internet(同时也会自动使用windows 认证) 而ip(不是127.0.0.1 而是网卡或外网IP)访问就等于是外网访问
上面这种做法是以.net 写的DLL 在客户端RUN,所以也是一样要有.net framework 而server 端不需要
至于传统的就是写activex 或 ctrl dll,然后regsvr32 到注册表生成一个clsid,抄下这个ID 放在HTML 里的object classid="clsid=xxxx" 这就属于传统的做法,会自动下载它指定的CAB 包并安装,安装后就算是本地LIB 基本上不受限