本人最近在做一个视频对话的功能,这个视频对话功能主要分为两个部分,服务器和客户端,服务器用ASP.NET开发,网页中嵌套一个用VC写的程序,用来调用视频对话的Actix控件。
服务端现在基本跑通,现在主要问题在客户端,客户端是用VB.NET写的,我在视频的页面里面定义了一个WebBrowser,通过WebBrowser调用一个静态网页,通过网页中的JS调用external.xxx来调用本地注册的com组件。但是说external属性不存在。
一下是代码: 页面代码
<System.Runtime.InteropServices.ComVisibleAttribute(True)> _
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim fileContents As String
fileContents = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\error1.html") WebBrowser1.DocumentText = fileContents
WebBrowser1.ObjectForScripting = Me
WebBrowser1.Navigate(Application.StartupPath & "\error1.html")
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim param() As Object = New Object() {"你好", "猪八戒"}
WebBrowser1.Document.InvokeScript("StartUp")
End SubEnd Class
HTML页面JS代码:
<script type="text/javascript">
function StartUp()
{
var strAdmin = "admin";
var strPwd = "698D51A19D8A121CE581499D7B701668";
var strIp = "192.168.0.55";
var strConf = "上海消防总队";
external.StartUpAv(strAdmin,strPwd,strIp,strConf,1);
}
function hallo(ss, name) {
alert(ss + name);
}
function sayHallo() {
alert(window.external);
window.external.Test("hello", 15);
}
</script>请问下问题出在哪里?
服务端现在基本跑通,现在主要问题在客户端,客户端是用VB.NET写的,我在视频的页面里面定义了一个WebBrowser,通过WebBrowser调用一个静态网页,通过网页中的JS调用external.xxx来调用本地注册的com组件。但是说external属性不存在。
一下是代码: 页面代码
<System.Runtime.InteropServices.ComVisibleAttribute(True)> _
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim fileContents As String
fileContents = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\error1.html") WebBrowser1.DocumentText = fileContents
WebBrowser1.ObjectForScripting = Me
WebBrowser1.Navigate(Application.StartupPath & "\error1.html")
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim param() As Object = New Object() {"你好", "猪八戒"}
WebBrowser1.Document.InvokeScript("StartUp")
End SubEnd Class
HTML页面JS代码:
<script type="text/javascript">
function StartUp()
{
var strAdmin = "admin";
var strPwd = "698D51A19D8A121CE581499D7B701668";
var strIp = "192.168.0.55";
var strConf = "上海消防总队";
external.StartUpAv(strAdmin,strPwd,strIp,strConf,1);
}
function hallo(ss, name) {
alert(ss + name);
}
function sayHallo() {
alert(window.external);
window.external.Test("hello", 15);
}
</script>请问下问题出在哪里?
原理里是实现webbrowser的接口,我不知道.net中怎么用。
vb6中咋弄呀,有没有代码?完整的http://blog.csdn.net/vansoft/article/details/3547261
比方网页上点什么,软件上就执行相应的功能,那只要用一个<a HREF就可以了
按不同的链接执行不同的功能,并且网页并不会切换到另一个界面
比方http://www.baidu.com/#3 #4
这种标签式的原理也行
用Implements IDocHostUIHandler这个是可以,但是他本身的LIB就有500K,我做好的程序可能才50K呢olelib这个库太大了,要是能直接用VB实现的话,没必要用别的组件,否则要是大家都不知道这个组件,岂不是就无法实现了?现在呢,我碰到的一个问题是,JAVASCRIPT调用某个内部函数时,能在VB中拦截掉获取就好了,这样就有办法处理了。比方网页上有一个方法:external.HelloWorld();
一旦执行,VB能拦截到就好了
Private WithEvents Doc As HTMLDocument
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Set Doc = WebBrowser1.Document
End Sub这个有很多事件,onclick等等,就是不知哪一个是ONscript run(脚本调用),有这个就很简单了
用Implements IDocHostUIHandler这个是可以,但是他本身的LIB就有500K,我做好的程序可能才50K呢olelib这个库太大了,要是能直接用VB实现的话,没必要用别的组件,否则要是大家都不知道这个组件,岂不是就无法实现了?现在呢,我碰到的一个问题是,JAVASCRIPT调用某个内部函数时,能在VB中拦截掉获取就好了,这样就有办法处理了。比方网页上有一个方法:external.HelloWorld();
一旦执行,VB能拦截到就好了
Private WithEvents Doc As HTMLDocument
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Set Doc = WebBrowser1.Document
End Sub这个有很多事件,onclick等等,就是不知哪一个是ONscript run(脚本调用),有这个就很简单了
lib库开发时用,发布时根本不需要的。