C#编写activeX控件与js相互调用
2012-06-12 17:14
417 查看
控件代码(项目->生成:勾选为COM互操作注册):
[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); } public delegate void MessageHander(string msg); [ComVisible(true)]//这个不能少 [Guid("C37124B1-8013-44C1-B8B4-9672B2AA175F")] [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] public interface IActiveXEvents { [DispId(0x60020000)] void PlayGame(string msg);//提供给javascript绑定 } [ComVisible(true)] [Guid("FCB41AEE-C75C-4FFA-89E7-A53E6F6F8365")] [ClassInterface(ClassInterfaceType.None)] [ProgId("TransFileClientLib.TransFileCtrl")] [ComSourceInterfaces(typeof(IActiveXEvents))] public partial class TransFileCtrl : UserControl, IObjectSafety { public event MessageHander PlayGame; #region IObjectSafety Members public int GetInterfaceSafetyOptions(ref Guid riid, ref int pdwSupportedOptions, ref int pdwEnabledOptions) { pdwSupportedOptions = 1; pdwEnabledOptions = 2; return 0; } public int SetInterfaceSafetyOptions(ref Guid riid, int dwOptionSetMask, int dwEnabledOptions) { return 0; } #endregion private void btnInvokeJs_Click(object sender, EventArgs e) { if (this.PlayGame != null) { PlayGame("成功!"); } else { WinUtils.FailMsg("调用失败!"); } } public void SayHello(){ MessageBox.show("hello!"); }前台代码:
<head> <script type="text/javascript"> window.onload = function () { var transFileCtrl = document.getElementById("transFileCtrl"); transFileCtrl.SayHello(); } window.onbeforeunload = function () { //alert("close"); } </script> <script type="text/javascript" for="transFileCtrl" event="PlayGame(msg)"> alert(msg); </script> </head> <body> <object id="transFileCtrl" width="390" height="374" classid="clsid:FCB41AEE-C75C-4FFA-89E7-A53E6F6F8365" VIEWASTEXT style="font-size:9pt;width:387px;height:384px;"> </object> </body>
相关文章推荐
- C++和C#编写的COM组件与DLL库相互调用
- Unity3D中C#和js方法相互调用
- .NET中WebBrowser控件内部页面的JS代码与外部C#代码的相互调用
- Unity3D探索之路-C#与js脚本间的相互调用
- Unity3D中js与C#之间相互调用的解决办法
- JS和C#方法相互调用
- js和c#相互调用
- C#winform后台代码与HTML内JS脚本函数相互调用
- js和c#相互调用
- js和c#相互调用
- JS与C#后台 函数、变量之间相互调用
- C# 用XiliumCefGlue做浏览器,JS和C#相互调用
- asp.net中前台js变量与后台c#的相互调用方法
- C++和C#编写并且相互调用COM组件
- 用WebBrowser承载视图,html编写页面,c#编写后端代码;用js调用后端代码,传入function参数作为回调;
- NET中WebBrowser控件内部页面的JS代码与外部C#代码的相互调用
- C++和C#编写并且相互调用COM组件
- Unity3D中js与C#之间相互调用的解决办法
- JS和C#方法相互调用
- 用WebBrowser承载视图,html编写页面,c#编写后端代码;用js调用后端代码,传入function参数作为回调;