1tyu 发表于 2013-2-5 02:10:42

C# and IE ActiveX Control

步骤如下:
1、新建项目;
namespace IEActiveXControl {    // Use GUIDGEN.exe    interface IIEActiveXControl { // Interface define      bool Installed(); // Install state,True = Installed,False = Not Installed      bool WasRunning(); // ClientApp Running state,True = Running,False = Not Running      void Logout(string strUserId,string strPassword,bool bRemoveRegKey);         void UnInstall();// UnInstall ClientApp    }        public interface IObjectSafety {      //methods               void GetInterfacceSafyOptions(System.Int32 riid,out System.Int32 pdwSupportedOptions,out System.Int32 pdwEnabledOptions);            void SetInterfaceSafetyOptions(System.Int32 riid,System.Int32 dwOptionsSetMask,System.Int32 dwEnabledOptions);    } // Keep same with step 11public class YourClassName:IIEActiveXControl {} 2、根据实际的业务需要在YourClassName中实现步骤1 中自定义的接口;
 3、修改AssemblyInfo.cs中ComVisible为;
 4、新建一个IEActiveXControlInstaller安装项目,并添加项目输出的主输出;
 5、然后在安装项目中点击项目主输出,在属性设置窗口中将Register改为vcdrpCOM;
 6、然后生成该IEActiveXControlInstaller.msi;
 7、新建一个IEActiveXControlInstaller.inf文件,内容如下:
signature="$CHICAGO$"AdvancedINF=2.0hook1=hook1run=msiexec.exe /i "%EXTRACT_DIR%\IEActiveXControlInstaller.msi" /qn  8、使用微软提供的CABARC.exe打成cab包,生成IEActiveXControlInstaller.cab文件;
CABARC.EXE N IEActiveXControlInstaller.cab IEActiveXControlInstaller.msi IEActiveXControlInstaller.inf  9、然后创建测试证书;
makecert -sk IEActiveXControl - n "CN=Javaeye,dc=com" c:\IEActiveXControl\IEActiveXControl.cer10、然后使用signtool signwizard启动签名向导,按照提示一步步完成对IEActiveXControl.cab的签名;
11、开始测试;
<object name="IEActiveXControl" id="IEActiveXControl"classid="CLSID:794037BB-168F-42db-BB18-AC11B98798E4" codebase="${contextPath}/IEActiveXControl.cab#version=1,0,0,0"></object> clssid注意和第一步YourClassName前的guid保持一致;
12、OK;
13、在IE6、7、8下通过了测试;
14、因为目前的业务某些原因无法上传源码;
 
当然,可能有朋友会说这是基于.net framework的,可能会要求客户机装有.net framework,对客户现场的部署来说是不可接受的。
不过个人觉得这几乎可以不用考虑,现在连5元碟片都已经自带了.net framework了,所以安装系统时可以不用在意这个问题了,当然就更不用说微软的Vista以及Windows 7了,虽然目前市面上对Vista的评价不咋地,但不可否认那毕竟会代表一个主流趋势。
 
页: [1]
查看完整版本: C# and IE ActiveX Control