当前位置: 首页 > news >正文

电子商务网站建设不足网络推广是以企业产品或服务

电子商务网站建设不足,网络推广是以企业产品或服务,外国网站 dns解析失败,服务专业的网站开发设计一、前言 最近有这样一个需求#xff0c;需要在网页上面启动客户端的软件#xff0c;软件之间的通信、调用#xff0c;单单依靠HTML是无法实现了#xff0c;因此必须借用Activex来实现。由于本人主要擅长C##xff0c;自然本文给出了用C#实现的范例#xff0c;本文的预期… 一、前言 最近有这样一个需求需要在网页上面启动客户端的软件软件之间的通信、调用单单依靠HTML是无法实现了因此必须借用Activex来实现。由于本人主要擅长C#自然本文给出了用C#实现的范例本文的预期效果是有一定Winform基础的人可都轻松读懂本文。 文章主要介绍了以下几个部分1、用C#制作Activex控件并发布为msi安装文件2、将msi打包为cab达到浏览器自动安装的效果3、给cab数字签名可选4、将Activex应用到网页上二、用C#制作Activex控件并发布为msi安装文件 1新建window用户控件项目EasyActivex。其实VS2010并没有提供专门的Activex项目模板所谓的Activex只要符合com标准即可。 2在EasyActivex项目添加IObjectSafety接口 在IObjectSafety接口代码如下值得注意的是Guid不能随便改必须为一下代码给出的Guid using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices;namespace EasyActivex {[ComImport, GuidAttribute(CB5BDC81-93C1-11CF-8F20-00805F2CD064)][InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]public interface IObjectSafety{[PreserveSig]int GetInterfaceSafetyOptions(ref Guid riid, [MarshalAs(UnmanagedType.U4)] ref int pdwSupportedOptions, [MarshalAs(UnmanagedType.U4)] ref int pdwEnabledOptions);[PreserveSig()]int SetInterfaceSafetyOptions(ref Guid riid, [MarshalAs(UnmanagedType.U4)] int dwOptionSetMask, [MarshalAs(UnmanagedType.U4)] int dwEnabledOptions);} }   3在EasyActivex项目添加EUserControl控件在控件中实现IObjectSafety接口。 在控件上面添加按钮命名为btnOpenNote 控件的后台代码必须实现IObjectSafety接口 using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace EasyActivex {//这个Guid网页调用的时候用到Mark[Guid(685F0A47-944D-4145-BF4E-76A02A422B02)]//这里要实现IObjectSafety接口public partial class EUserControl : UserControl, IObjectSafety {public EUserControl(){InitializeComponent();}#region IObjectSafety 接口成员实现直接拷贝即可private const string _IID_IDispatch {00020400-0000-0000-C000-000000000046};private const string _IID_IDispatchEx {a6ef9860-c720-11d0-9337-00a0c90dcaa9};private const string _IID_IPersistStorage {0000010A-0000-0000-C000-000000000046};private const string _IID_IPersistStream {00000109-0000-0000-C000-000000000046};private const string _IID_IPersistPropertyBag {37D84F60-42CB-11CE-8135-00AA004BB851};private const int INTERFACESAFE_FOR_UNTRUSTED_CALLER 0x00000001;private const int INTERFACESAFE_FOR_UNTRUSTED_DATA 0x00000002;private const int S_OK 0;private const int E_FAIL unchecked((int)0x80004005);private const int E_NOINTERFACE unchecked((int)0x80004002);private bool _fSafeForScripting true;private bool _fSafeForInitializing true;public int GetInterfaceSafetyOptions(ref Guid riid, ref int pdwSupportedOptions, ref int pdwEnabledOptions){int Rslt E_FAIL;string strGUID riid.ToString(B);pdwSupportedOptions INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA;switch (strGUID){case _IID_IDispatch:case _IID_IDispatchEx:Rslt S_OK;pdwEnabledOptions 0;if (_fSafeForScripting true)pdwEnabledOptions INTERFACESAFE_FOR_UNTRUSTED_CALLER;break;case _IID_IPersistStorage:case _IID_IPersistStream:case _IID_IPersistPropertyBag:Rslt S_OK;pdwEnabledOptions 0;if (_fSafeForInitializing true)pdwEnabledOptions INTERFACESAFE_FOR_UNTRUSTED_DATA;break;default:Rslt E_NOINTERFACE;break;}return Rslt;}public int SetInterfaceSafetyOptions(ref Guid riid, int dwOptionSetMask, int dwEnabledOptions){int Rslt E_FAIL;string strGUID riid.ToString(B);switch (strGUID){case _IID_IDispatch:case _IID_IDispatchEx:if (((dwEnabledOptions dwOptionSetMask) INTERFACESAFE_FOR_UNTRUSTED_CALLER) (_fSafeForScripting true))Rslt S_OK;break;case _IID_IPersistStorage:case _IID_IPersistStream:case _IID_IPersistPropertyBag:if (((dwEnabledOptions dwOptionSetMask) INTERFACESAFE_FOR_UNTRUSTED_DATA) (_fSafeForInitializing true))Rslt S_OK;break;default:Rslt E_NOINTERFACE;break;}return Rslt;}#endregion/// summary/// 打开记事本/// /summary/// param namesender/param/// param namee/paramprivate void btnOpenNote_Click(object sender, EventArgs e){System.Diagnostics.Process.Start(notepad.exe); }} } 小提示EUserControl代码的Guid可以用VS附带的Guid生成工具生成 4在EasyActivex项目AssemblyInfo.cs文件中添加代码 //用户添加 [assembly: AllowPartiallyTrustedCallers()]   5设置EasyActivex项目项目属性为com互操作 6新建windows程序安装项目EasySetup 7将EasyActivex项目生产的dll添加到EasySetup项目中。下图的EasyActivex.dll为已经添加进去了的文件。 8在EasySetup项目中设置EasyActivex.dll文件属性为vsdraCOM。 完成以上步骤生成下即可得到msi安装文件 三、将msi安装文件打包为cab达到在浏览器中自动安装的效果 如果只是生成了msi文件用户安装的时候比较麻烦像安装一般软件一样需要用户慢慢点击下一步慢慢安装在本项目中采用打包成cab文件的方式做到用户点击运行后即可自动安装。 在这里需要准备文件有 cabarc.exe微软提供的cab打包工具 EasySetup.msi  本案例中EasySetup项目生成的windows部署安装文件 install.inf 需要跟EasySetup.msi打包在一起的文件制作方法请见下文 build.bat  打包的批处理命令制作方法请见下文 1  install.inf制作。新建txt文件加入以下内容将文件名重新命名为install.inf即可。其中EasyZSetup.msi即是要打包的安装程序的名称。 [version] signature$CHICAGO$ AdvancedINF2.0 [Setup Hooks] hook1hook1 [hook1] runmsiexec.exe /i %EXTRACT_DIR%\EasySetup.msi /qn   2   build.bat制作。新建txt文件加入以下内容将文件名重新命名build.bat即可。其中EasyActivex.cab是生成目标cab的名称install.inf是第一步生成的文件名而EasySetup.msi是需要打包的安装程序名第二条ping命令仅仅是让批处理不要那么快退出起到更利于观察生成结果的作用。 cabarc.exe -s 6144 n EasyActivex.cab install.inf EasySetup.msi ping -n 20 127.0.0.1 nul   把以上四个文件复制到同一个文件夹中双击build.bat批处理命令即可生成cab文件 双击bat后的运行结果如下其中EasyActivex.cab即是生成的目标cab文件。 三、给cab数字签名可选 由于处于安全问题考虑IE浏览器设置默认是禁用未签名的Activex控件的不过想想也知道假如打开个未知网页“网页”就能随便调用计算机本地的东西是多么恐怖的事情因此浏览器运行的Activex必须是签名了的也符合常理。 如果不怕用户麻烦不采用cab签名的方式的话也可以通过设置浏览器安全性来运行Activex。设置方法打开浏览器--浏览器Internet选项--安全选项卡--自定义级别按钮-下载未签名的Activex控件设置为提示保存即可。等安装完毕后可以将“下载未签名的Activex控件”设置回禁用。 以下为给cab签名的方法具体方法数字认证网上面已经介绍得很详细 1申请、安装证书。上中国数字认证网http://www.ca365.com/申请一个免费数字证书试用期为1年如果企业用的话需要购买。  操作方法http://www.ca365.com/forward.do?pageurl/ca/yhsc/4.jsp 值得注意的是证书用途必须选择代码签名证书。 申请成功后的证书由于是不带密钥的因此下载完毕后只能够在申请证书的机器上安装、使用签名文件如果需要在其他机器上使用的话需要将密钥导出操作方法为 http://www.ca365.com/forward.do?pageurl/ca/yhsc/5.jsp 。 2用证书给cab包签名http://www.ca365.com/forward.do?pageurl/ca/thsc/7.jsp  四、在解决方案中添加EasyWeb项目 终于到了最后一步发布鸟。在解决方案中添加EasyWeb项目   在网页目录中新建Activex文件夹并将EasyActivex.cab文件拷贝进去 在网页中添加以下代码即可调用Activex控件了。值得注意的是codebase是cab包的相对路径clsid是EUserControl控件的Guid。 object idcsharpActiveX codebaseActivex/EasyActivex.cab classidclsid:685F0A47-944D-4145-BF4E-76A02A422B02/object 运行效果如下 点击即可在网页中打开记事本了。   五、本案例源码cab打包工具数字签名工具下载   六、参考资料 1、使用C#开发ActiveX控件  http://www.cnblogs.com/yilin/archive/2009/09/15/1567332.html  2、Activex签名方法和工具技巧  http://www.360doc.com/content/10/0901/15/203871_50402416.shtml 3、中国数字认证网用户手册 http://www.ca365.com/forward.do?pageurl/ca/yhsc.jsp
http://www.lebaoying.cn/news/34812.html

相关文章:

  • 个人网站制作步骤网址大全黄页男女免费
  • ipsw 是谁做的网站宁波电商网站建设开发
  • 宁夏网页设计网站做国外网站的公证要多少钱
  • 网站开发大概多久网站申请服务器空间
  • 织梦网站怎么做安全措施网页界面设计视觉空间的三维可视化
  • 网站开发要加班吗娄底网站建设wyo8
  • 做网站niche汽配网站开发
  • 创业园网站建设编程app免费
  • 上海网站设计 企业阳高县网站建设
  • 企业网站打不开什么原因于都网站建设
  • 网站开发的推荐参考书大型网站如何优化
  • 中卫网站推广营销wordpress防止发表重复标题的文章
  • 360网站备案查询wordpress+联动筛选
  • 网站制作顺序企业信息管理系统的设计与实现
  • 做网站gzip压缩网页设计视频网站建设
  • 网站开发dede廉政网站建设的意义
  • 小企业网站建设在哪里天津网站备案
  • 做网站哪里最便宜购物网站html模板
  • 心雨在线高端网站建设泰安人才网广纳英才招聘信息
  • 关键词优化举例网站关键字优化
  • 河南如何建网站要什么条件谷歌广告开户
  • wordpress 导航站模板下载地址杭州网站优化培训
  • 四川宜宾建设局官方网站江西中创建设工程有限公司网站
  • app网站建设哪家好视频制作软件电脑版
  • 网站空间和数据库空间网站自定义链接怎么做
  • 网站改版 新闻昆山做网站价格
  • 大连网站的优化网站自动生成
  • 网站维护常识西安品牌网站建设
  • 团购网站开发代码有什么做任务得佣金的网站
  • 做川菜的网站兰州正规seo整站优化