浏览器怎么给winform传值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浏览器怎么给winform传值相关的知识,希望对你有一定的参考价值。

winform中用的是webBrowser控件,现在想打开一个网页给winform传个路径进去,这样的话,在 winform中怎么给网页做这么一个接口
像迅雷一样的,点一下链接就跳迅雷下载的界面,这种效果怎么实现

简单地说就是通过网页操作程序里面的函数么。
简单的步骤:
1.要给浏览器操作的对象加上标记:
[System.Runtime.InteropServices.ComVisible(true)]
public class BrowserTest
public void TestMethod()

这个对象里面的公开函数供网页调用的,比如你在TestMethod里面打开窗口运行程序之类的。这个函数本身也可以返回或接收相关参数,由于我没测试过很多,建议仅使用见到那的数据类型,如int或string之类的。

2.设置WebBrowser的属性:
WebBrowser.ObjectForScripting = new BrowserTest();

3.在网页中通过JS调用:
window.external.TestMethod();
这样即可调用你创建的 BrowserTest() 类里面的 TestMethod() 函数。

很简单。上面不会的同学不要瞎嚷嚷。不过提醒一下这个只适合在程序内嵌的浏览器窗口中调用自己的函数,而不是在IE中调用。
更详细的资料可以搜索相关网站。追问

我要的就是要在IE中调用

追答

那你提啥WebBrowser控件呀?败给你了。要在IE中用需要用BHO或自定义控件,相对而言自定义控件比较简单一点。你要用哪种?

参考技术A 这里有个误区,迅雷中点一下链接就跳到下载界面这样的效果并不是网页直接给迅雷传递了什么路径或者参数。
要实现这样的效果,有几个方法。
1. 使用IE插件,用户安装你的插件后,你可以监视IE点击的是链接,那就启动你的下载软件进行下载。
2. 使用协议。类似QQ客服的连接,一点就启动聊天。具体的做法需要了解就发消息来咨询。
3. 使用JS跟C#进行通信。
4. 使用代理。具体就是winform启动后,监听80端口,发现有http请求,分析这个请求头,然后可以得到连接。(这个做法就绕了个大圈子,不过在特定的时候是需要这么做的,比如说抓取网页上的视频地址等。)
总之方法还有很多,就看你的需求范围来定了。追问

使用IE插件怎么做,有没有实例呀

参考技术B Document.GetElementById
Google县城 代码追问

你这个是只对网页的吧,我要的是网页跟winform结合用的

追答

winform可以拿到Document的对象

追问

怎么连在一起

追答

申请Document对象就连在一起了

追问

请我详细点,最好有个教程地址

参考技术C 使用JS 把

可以使用JS调用C#方法 大道目的
参考技术D 很复杂,用ActiveX可以解决。追问

怎么解决???

winform窗体加载很慢,怎么优化

参考技术A 把耗资源的控件拿出来,单独加载,放个进度条显示加载速度。

以上是关于浏览器怎么给winform传值的主要内容,如果未能解决你的问题,请参考以下文章

WPF C#怎么窗体间传值

jsp给js传值怎么传

winform界面传值问题

c# 2个winform 中的下拉框传值问题

C#(Winfrom)窗体传值问题(子窗体回传值给父窗体)

C#winform中在一个主窗体中打开几个子集窗口,如何让子集窗口在主窗体中平均分布