迷失网络

如果你误读成“迷失公园”或“迷失侏罗纪”,那你可能真的迷失网络了。
随笔 - 88, 评论 - 1932, 引用 - 106

导航

关于

lostinet@lostinet.com这个油箱不能用了。因为空间没了,lostinet.com指向为127.0.0.1 。。。

标签

每月存档

最新留言

广告

 

我用WinForm开发也有一段时间了。我觉得目前的WinForm开发速度是够的,但是一些原本在HTML就很容易做到的事情,在WinForm中就很难实现了。 这个主要的原因可能是WinForm复用控件的能力非常强,但是可用的控件却非常少。一般买回来的控件不但贵,而且也不是太好扩展。

作为一个学了多年HTML的人,我当然希望在WinForm中依然能使用HTML的特征,例如强大的CSS!,自动排版伸缩的特征,(CSS与排版可以更方便打印!),以及脚本的编写。(有时候写脚本比写WinForm的程序更爽。具体情况具体做)。

要做这个其实不难。但是要灵活运用则不容易了。

通常,使用WebBrowser控件的人,只是简单地使用MSHTML调用WebBrowser里的东西。也就是说,这个调用是单项的,只考虑到修改HTML来显示某种东西。

今天我写这个随笔的意图是告诉大家怎样把用户在WebBrowser里的操作反馈给WinForm

做这个反馈的基石是 DotNet 的 InteropServices 。通过把DotNet的某个对象,传到HTML DOM里去,然后用脚本来操作该DotNet对象。

要做到这个,核心是:

  1. 获取 WebBrowser.Document ,它实现了mshtml.IHtmlDocument /2/3/4/5 (其中IHtmlDocument2最有用)
  2. 这个Document是 System.Runtime.InteropServices.Expando.IExpando,通过它来设置和获取Document的一些动态命名的成员。

例子中的代码是:
mshtml.IHTMLDocument2 doc2=(mshtml.IHTMLDocument2)browser.Document;
System.Runtime.InteropServices.Expando.IExpando ex=(System.Runtime.InteropServices.Expando.IExpando)doc2;
System.Reflection.PropertyInfo piform1=ex.AddProperty("Form1");
piform1.SetValue(doc2,this,null);//从此,在HTML的document.Form1就是这个WinForm的Control了。你可以用脚本来调用Form1 !

有了这些交互,我们可以实现的东西实在太多太多了。

我做了一个简单的例子,在这里下载 http://www.lostinet.com/files/WinHtml.zip

我下一步应该是研究一下,怎样直接把WinForm的Control动态地嵌进这个HTML里。(不是用 《 OBJECT 》来部署的形式)

打印 | 张贴于 2004-06-04 11:26:00 | Tag:DotNet  Browser  WinForm

留言反馈

#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
楼主能否发一份http://www.lostinet.com/files/WinHtml.zip
给我呀?正需要~~~先谢谢
jacky_lz@163.com
2008-11-13 10:49:47 | [匿名:jacky112]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
楼上的众位兄弟你们收到邮件了吗?
楼主现在正弄webbroswer能发给我一份吗?
jindongbin@gmail.com
谢谢
2008-11-08 17:23:40 | [匿名:CupID]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
您好 最近對c# 的webbroswer 有再研究

可以向您要一份code 看看嗎 謝謝
2008-02-01 16:12:00 | [匿名:fish man]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
您好,我最近项目刚好用到这东西。能不能给我发一份
zuo.li@hotmail.com
2008-01-02 10:01:00 | [匿名:Air]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
您好,请教您一个问题:
   .net中我用了一个WebBrowser控件打开一个网页,模拟提交了表单,但返回的页面在一个新弹出来的(IE)窗口中。后来,在程序中,我设置了表单的targer属性为“_self”后新网页就没了,原窗口不变。
  但我想控制模拟操作所返回的信息(或对象)以便进用程序在其返回的网页中行进一步操作,有没有办法将返回信息存入WebBrowser中?或者,我怎样才能控制这个返回的结果?
2007-12-16 16:39:00 | [匿名:bubbleShooter]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
下不了了,麻烦您给我传一份吧谢谢!现在我正要做一个这样的项目! ryxie@126.com
2007-11-01 16:09:00 | [匿名:xry]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
mshtml.IHTMLDocument2 doc2=(mshtml.IHTMLDocument2)browser.Document;编译时报错 “Cannot convert type 'System.Windows.Forms.HtmlDocument' to 'mshtml.IHTMLDocument2'” 请问为什么?

Try the following:
mshtml.IHTMLDocument2 doc2=(mshtml.IHTMLDocument2)browser.Document.DomDocument;
2007-09-19 05:24:00 | [匿名:Z]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
Try this:

public partial class Form1 : Form, IElementBehaviorFactory
2007-09-19 05:21:00 | [匿名:Z]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
下不了啊,麻烦给传一份吧谢谢! jijianpeng187@126.com
2007-07-29 21:24:00 | [匿名:peng]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
mshtml.IHTMLDocument2 doc2=(mshtml.IHTMLDocument2)browser.Document;编译时报错 “Cannot convert type 'System.Windows.Forms.HtmlDocument' to 'mshtml.IHTMLDocument2'” 请问为什么?
2007-07-24 13:51:00 | [匿名:kting]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
正在研究中,望能发份代码研究研究。。。
luozhanke@163.com
2007-07-23 15:09:00 | [匿名:luoke]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
大哥,demo附件下载不了,mail一份给我吧
邮箱:liulei.sh@gmail.com
非常感谢!
2007-04-25 11:49:00 | [匿名:stoney]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
忘了留下E MAIL...

sofor@netease.com
2007-04-19 19:41:00 | [匿名:GeDeL]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
樓主,代碼下載不了啊.....可否發一份給我呢?

謝謝!!!
2007-04-19 19:39:00 | [匿名:GeDeL]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
请楼主也给我份资料谢谢 啊
yarlker@163.com
万分感谢
2007-01-12 13:55:00 | [匿名:不在乎]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
楼主 能不能给我一份 ,
谢谢.

yangyong9842@163.com
再次谢谢!!!
2007-01-10 16:00:00 | [匿名:yangyong]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
楼主 能不能给我一份 ,我下载不到,谢谢.
qi_cheng@tom.com
2006-12-30 11:57:00 | [匿名:hoho]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
怎么使用mshtml

在代码里直接写mshtml.IHTMLDocument2 是报错的


是不是要using *****
2006-10-19 13:55:00 | [匿名:asd]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
可否得到一份源码?

Hr520@sohu.com

跪谢!
2006-09-20 23:17:00 | [匿名:大风]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
你好!有幸读到您的文章
我正做相关的内容,可以给我一份Demo吗?
qfgetletter@yahoo.com.cn
非常感谢!
2006-08-29 19:04:00 | [匿名:ctlove]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
楼主 能不能给我一份 这里没办法下载啊,谢谢.
zds1882121@163.com
2006-07-25 09:55:00 | [匿名:dashanzhou]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
楼主 能不能给我一份 这里没办法下载啊。
zjbtony@yahoo.com.cn
2006-07-18 10:56:00 | [匿名:zjh]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
楼住 请J 份DEMO给我,谢谢.
cenxaoi@163.com

2006-05-27 11:09:00 | [匿名:cenxaoi]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
不能下。可否也分享一份demo
ziqing1980@163.com
2006-05-11 12:13:00 | [匿名:ziqing]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
可否也分享一份demo
tessalee1226@hotmail.com
感激不盡啊!!!
2006-05-10 11:03:00 | [匿名:eelu]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
写的很好,可否发份源码给我,
万分感谢!
xgr2423@163.com
2006-04-30 10:50:00 | [匿名:Brian]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
大虾。我是初学者 。想问个问题:如何在在WebBrowser里找到当前网页在历史记录中的位置?如果已经到最开始的网页处 怎么检测已经到头了,以实现不让goback起作用??
2006-04-28 16:55:00 | [匿名:热忱的求教]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
我也想要一份源码,SLUCKYWHH@SOHU.COM,谢谢!
2006-04-20 16:54:00 | [匿名:slw]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
能发我一份源码吗?
139265822@qq.com
2006-04-13 08:38:00 | [匿名:非常不错]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
写得很好,就是源代码下不了
能发我一份吗?
design_room@163.com
2006-03-19 18:58:00 | [匿名:右手]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
下不鸟,能给我一份吗?
zjbtony@yahoo.com.cn
谢谢了
2006-03-14 13:21:00 | [匿名:zjh]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
下载不了呀.可以传个代码给我吗?wkangdl@163.com

2006-01-26 10:47:00 | [匿名:wk]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
下载不了呀.可以传个代码给我吗.netdalanhan@126.com
2006-01-09 01:55:00 | [匿名:vagabond]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
大哥,谁有例子,给发个好不好啊~
asyura@126.com
2005-12-31 10:11:00 | [匿名:OCEAN]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
下载不了,请发至drizzt.zhao<at>gmail.com
谢谢
2005-12-21 17:45:00 | [匿名:drizzt]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
其实不只跟HTML,交互为了炫也可以把FLASH做为软件的UI,可以在WinForm内嵌FLASH,让FLASH与WinForm进行交互,可以传数据给FLASH 让 FLASH转到一些FLASH UI窗口,FLASH需要一些本地操作,也可以发命令给WinForm,技术实现也不复杂
2005-11-19 04:53:00 | [匿名:Touchboy]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
可否也寄一份demo給我呢。謝謝了。
swxing@msn.com
2005-11-09 17:24:00 | [匿名:Eric]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
下载不了,能Mail给我一份吗?谢了 !
recall2k@sina.com
2005-10-28 11:12:00 | [匿名:Recall2k]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
你的Demo下载不了啦,能Mail给我一份吗?谢谢了
Email:zmdstone007@163.com
2005-10-20 09:22:00 | [匿名:stone]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
你的Demo下载不了啦,能Mail给我一份吗?谢谢了
EMail:unicheer@163.Com
2005-08-31 13:02:00 | [匿名:joesangui]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
老兄,你的DEMO下载不了啦,请MAIL给我一份:
bj_qwy@126.com

另外请加我的QQ,我可以帮你提供下载:172527
2005-08-15 14:03:00 | [匿名:阳光]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
你胡Demo下载不了啦,能Mail给我一份吗?谢谢
EMail:xuyi7208@163.com
2005-07-02 13:19:00 | [匿名:Sunny]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
你的Demo下载不了啦,能Mail给我一份吗?谢谢了
EMail:yqken@163.Com
2005-06-30 19:29:00 | [匿名:Yq]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
最近在研究用WebBrowser控制Web里的Form,遇到一些难题。
你的Demo下载不了啦,能Mail给我一份吗?谢谢了
EMail:yuanshunli@vip.sina.com
2005-05-25 20:59:00 | [匿名:sunny]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
小弟的公司今天要我用VS.net2003做这样的浏览器出来,请问有这样的一个Demo吗?能Email给我一份吗?E-mail:surecrb@163.com
谢谢!!!!!!
2005-05-15 03:08:00 | [匿名:surecrb]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
可否传个例子给我,那地址下不了了,谢谢 orieni@163.com
2005-04-23 17:34:00 | [匿名:arien]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
现在不能下载,我也正在学习这个,能否给我传一份Demo。
lp@nmec.org.cn
多谢。
2005-04-19 16:47:00 | [匿名:LP]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
你好!有幸读到你这文章
我正做相关的内容,可以给我一份Demo吗?
honglou2001@163.com
谢谢!
2005-04-18 12:31:00 | [匿名:yqx]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
我也想要一份您的DEMO。不知能否获得惠赐。。我的邮箱 hostor@163.com
2005-04-13 17:27:00 | [匿名:fifi]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
现在不能下载,我正在学习这个,能否给我传一份Demo。
wangrh_liuyh@tom.com
多谢。
2005-04-10 17:16:00 | [匿名:王]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
能不能发一份你的Demo给我?我的email: cooldongbei@163.com
2005-04-07 20:55:00 | [匿名:cryout]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
你好,看了很想试试,可你的DEMO已经不能下载了,可不可以给我发一份:asyura@126.com
谢谢。
2005-03-21 10:15:00 | [匿名:lxy]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
你好,我最近也在研究MSHTML,以后多多交流啊,我的msn是:navyliu@hotmail.com
2005-02-24 11:29:00 | [匿名:navyliu]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
无聊啊。。。。还不如把GDI+学好!居然想出这种歪门邪道到来了。。。。虽然以前我也那么干过。。。赫赫。。
2005-01-13 10:23:00 | [匿名:edison1024]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
这个程序有一个问题,如果第一次运行就不会出错,如果按f5刷新web,就会报错,说找不到document.form1.我里面写的方法,
问作者该怎么解决,谢谢
2005-01-03 16:43:00 | [匿名:急人]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
厉害 厉害 用了之后果然效果非凡
2004-10-13 16:32:00 | [匿名:iamrobot]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
以前我 也做过webform和winform互嵌的研究,不过那时只是简单的弄,没有深入的。这篇文章,又让我学到很多,不过,到底怎么样把net控件放在html上呢? 还是没有弄清。
2004-09-14 21:52:00 | [匿名:yingfan]
#re: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
哎.
很感兴趣.
奈何看不懂撒...55555555555555
2004-08-10 02:28:00 | [匿名:aaaa]
#写得太精彩了 编辑
很好的文章,对我很大帮助,谢谢楼主
2004-08-09 09:46:00 | [匿名:rf_sun]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
如果自己实现一个WebBrowser 那岂不是想怎样爽就怎样爽了?
不知道又没有用.net实现的WebBrowser
2004-06-08 14:38:00 | [匿名:zxj]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
呵呵,曾经用这个东西写过自动发布的咚咚
2004-06-05 18:53:00 | [匿名:仪表]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
不知有没有大侠研究用flash来做UI?
2004-06-04 21:12:00 | [匿名:xx]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
MYIM整个界面就是用IE,晕死了,反应比较慢,可能是他设计的问题.

我用MSN客户端发起对话,输入1000次短信,MYIM丫的就死掉了

用IE来做界面可以比较方便的实现很炫目的效果,但有时在控制方面还是觉不理想的.
2004-06-04 21:11:00 | [匿名:xx]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
呵呵。我想这些东西是不能随便传的。
要不段地用Expando来把它装上。
2004-06-04 18:05:00 | [匿名:Lostinet]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
这样封装成函数就可以!
public void Test(string strValue)
{
textBox1.Text=strValue;
}
2004-06-04 16:51:00 | [匿名:玻璃杯]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
TO:Lostinet
按照你提供的方法修改还是提示错误!!(两种方法都出错)
2004-06-04 16:49:00 | [匿名:玻璃杯]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
to 玻璃杯:
如果你是在我的例子的基础上改的,那么出现这个问题的最可能的原因是 textBox1 是 private 的。
如果作为public的property,则会更好
例如
public TextBox TextBox1
{
get
{
return textBox1;
}
}
2004-06-04 16:24:00 | [匿名:Lostinet]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
这个怎么样调用Form1中的控件了,我是这样写的document.Form1.textBox1.Text="";但提示出错!!
2004-06-04 15:41:00 | [匿名:玻璃杯]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
大锅层次就是高啊

吼吼~~

学习学习 再学习~
2004-06-04 14:23:00 | [匿名:问题多多多 专找开心说]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
这个可不是做来实现B/S的。
因为很多人都知道怎样在Windows程序中嵌IE。
如果HTML只是纯粹通过HTTP和服务器进行交互,那就是B/S了

而我这里则是希望用WinForm嵌IE的形式,
并且提供“服务”给网页中的脚本调用。

例如Form1的权限,可以读本地文件,可以跨域名访问其他网站的WebService,可以用WinForm作为代理,操作其他跨域的FRAME,又或者是修改用户打印的设置等。

原本DHTML无权做的,或者不能做的,现在都可以委托WinForm来做了。
而DHTML的主要作用就是提供界面和运行一些更胶水的脚本。
2004-06-04 14:06:00 | [匿名:Lostinet]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
不过这种程序好象对客户机要求要苛刻些 安装的版本不对运行有问题

上次做了个东西用WebBrowser 在我本地好好的 放到服务器上就出不行了(类 win服务的东西)
2004-06-04 13:55:00 | [匿名:问题多多多 专找开心说]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑

很好
非常好


真的可以做些让别人奇怪的事了 哈哈


偶喜翻 偶b/s的时间比较长 想不到这个东西有可能让我挂着做c/s的旗子做b/s的事 哇 哈哈~~~


大锅继续研究~~

关注中。。。。。。。。。。。。
2004-06-04 13:53:00 | [匿名:问题多多多 专找开心说]
#回复: 结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 编辑
例子中的window的获取是多余了.
因为我发现了
IHTMLDocument2.parentWindow
2004-06-04 12:50:00 | [匿名:Lostinet]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode.MVC引擎 0.5.2.0