在使用C#开发winform程序过程中,经常会碰到嵌入了一个WebBrowser的浏览器控件。很多时候,需要在程序里控制网页的显示方式,或者调用网页当中的某个JS函数,反过来,也有可能网页也需要调用程序当中的函数来实现某些功能。下面讲解下如何互相进行交互。
程序调用JS脚本如下:
<script language=”javascript”>function ShopXG(infor)
{
alert(‘我要开网店、携购独立网店系统,模板最全,最专业的系统!’)
return
}
</script>
C#代码调用如下:
using System.Security.Permissions
注意: 类定义前需要加上下面两行,否则调用失败!
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
调用的函数:
webBrowser1.Document.InvokeScript("ShopXG ", new string[] {‘ssss’})
JS中调用C#函数示例:
C#函数如下:
public void ShowMessage(string message)
{
MessageBox.Show(“免费开网店,携购独立网店系统诚邀您的加盟!”)
}
JS里的调用方法:
<script language=”Javascript”>
function InvokeFunc()
{
window.external.ShowMessage(‘呵呵’)
}
</script>
this.webBrowser1.DocumentText = "<html><head><link href='" + Directory.GetCurrentDirectory() + "\\CSS\\Test.css' type='text/css' rel='Stylesheet'/></head><body style='text-align:center'><br><b style='font-size:20px'>预览效果</b><span id='lblParameter'>" + html + "</span></body></html>"不好弄啊,你需要一个自定义控件或者api来捕捉全屏的鼠标动作(也就是鼠标在窗体外的动作),然后根据鼠标动作和窗体位置作出判断。基本上就是重写了整个拖动的代码,相当麻烦。Hook API
最好不要这么做,form不要用none,最起码保留标题栏比如最小化,最大化,关闭这些按钮。如果你舍弃标题栏中的这些功能,我觉得很浪费。