c# asp.net 从IE中启用ActiveX 控件中的事件和捕捉并响应
概要:
在客户端计算机上运行的任何应用程序可以自动从 web 页中。下面的文章将提供有关完成此使用 ASP.NET 和 C# 和编写脚本的详细的步骤。方法演示如何启用 ActiveX 控件中的事件和捕捉并响应在 Internet Explorer 中的这些事件。
触发并接收 InternetExplorer 中的事件
当托管的ActiveX控件嵌入(embedded)到web窗体中,你一定要了解,ActiveX触发的事件不会在服务器上执行。它可能你会这样做,因为在code-behind中编写代码。可是,该代码实际上在客户端触发ActiveX控件. 之间的细微差别意味着在web浏览器中汇总,或处理这些事件是可能的。 概念验证 就是在客户端自动运行windows media,从而导致应用程序加载不正确的文件。不正确的文件将会触发该 ActiveX 控件中的 Windows media 错误。该错误将传递到 Internet Explorer 的错误事件。
1.创建用户控件
打开vs2005,创建一个winform控件库项目,并命名为ActiveControl.
添加名为“Fire”的按钮,并设置标题为“开始”,在按钮上面添加一个标签,设置text属性为“Press to start”.下面是完整代码。
using System; using System.Windows.Forms; using System.Runtime.InteropServices; namespace IEWinEvents { //this class is used to make error messages available on the client publicclassErrObject { privatestring _msg; public ErrObject(string str) { _msg = str; } //public properties enable javascript to access the internal class members on the client publicstring Message { get { return _msg; } set { _msg = value; } } } //delegate to handle error condition publicdelegatevoidErrorEventHandler(object e); [GuidAttribute("9819EE05-86A4-43a8-AF62-A7AFFA69AB1B")] [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)] publicinterfaceControlEvents { //Add a DispIdAttribute to any members in the source interface to specify the COM DispId. [DispIdAttribute(0x60020000)] void ErrorEvent(object e); } [ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(ControlEvents))] publicpartialclassActiveXControl : UserControl { event IEWinEvents.ErrorEventHandler ErrorEvent; privatestatic WMPLib.WindowsMediaPlayer Player; public ActiveXControl() : base() { InitializeComponent(); } privatevoid Start_Click(object sender, EventArgs e) { Player = new WMPLib.WindowsMediaPlayer(); Player.MediaError += new WMPLib._WMPOCXEvents_MediaErrorEventHandler(Player_MediaError); Player.URL = "invalidFile.wma"; Player.controls.play(); Player.uiMode = "mini"; } void Player_MediaError(object pMediaObject) { //display a message MessageBox.Show("Failed"); notify all subscribers including IE sinks if (ErrorEvent != null) { ErrorEvent(newErrObject("Invalid file name")); } } } }
向项目添加引用Micrososoft windows media player.为此,右键microsoft visual studio解决方案资源管理器中的项目并选择添加引用,在com组件选项卡,选择windows media player,然后单击确定。
盲点补充:js文件标签中的属性for ,event
<script language= "javascript " for= "window " event= "onload ">
EVENT event 设置或获取脚本编写用于的事件
FOR htmlFor 设置或获取绑定到事件脚本的对象。
可以这样理解。
<script language= "javascript " for= "window " event= "onload ">
相当于 <script language= "javascript ">
// 绑定 window.attachEvent( "onload ",function() { // TODO })
</script>
FOR 后面跟的是一个控件的ID,比如<object id="window"><object>这可能是一个组件。比如在线编辑器,word内嵌的编辑器等
EVENT是指下面的javaScript脚本是在页面载入的时候调用
文章来源:http://support.microsoft.com/kb/555687
activex控件制作入门:http://www.newxing.com/Tech/DotNet/CSharp/ActiveX_274.html
activex资料参考:http://www.cnblogs.com/qmfsun/archive/2013/06/11/3132004.html
com基础:http://www.cnblogs.com/jyz/archive/2008/04/11/1148447.html
activex组件和js交互资料:http://blog.chinaunix.net/uid-15753628-id-3999031.html
作者:造梦者2013
出处:http://www.cnblogs.com/lipanpan/
本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号