做WEB开发的想把网页做成应用程序的界面,开发应用程序的又想把程序界面做得和WEB一样。本文介绍一下用HTML做软件UI用到的的一些技术。

其实HTML UI也不是什么新鲜事了,Norton Antivirus从几年前的版本就开始用了,vs.net2002中的开始页也用了这个技术。
from:http://wuchang.cnblogs.com/archive/2006/06/12/423978.html

[方案一,适用于vs2002~2005(vb/delphi等类似)]

1、导入web browser COM控件

2、实现IDocHostUIHandler接口,MSDN中有介绍WebBrowser Customization。

IDocHostUIHandler接口有十几个方法,这里我们只关心这个:

void IDocHostUIHandler.GetExternal(out object ppDispatch)

当在浏览器脚本中调用 window.external时就会调用这个方法,我们需要在返回一个对象。如:

public class Form1 : Form, IDocHostUIHandler
{
public Form1()
{
InitializeComponent();
object flags = 0;
object targetFrame = String.Empty;
object postData = String.Empty;
object headers = String.Empty;
this.WebBrowser.Navigate("about:blank", ref flags, ref targetFrame, ref postData, ref headers);
ICustomDoc cDoc = (ICustomDoc)this.WebBrowser.Document;
cDoc.SetUIHandler((IDocHostUIHandler)this);
this.WebBrowser.Navigate(@".", ref flags, ref targetFrame, ref postData, ref headers);
}
void IDocHostUIHandler.GetExternal(out object ppDispatch)
{
ppDispatch = new Hello();
}
}

添加Hello类的代码,注意:此类一定要加上ComVisible=true特性,或是给整个程序集加上[assembly: ComVisible( true )]。

[ComVisible(true)]
public class Hello
{
public void Haha(string msg)
{
MessageBox.Show(msg);
}
}

这样,就可以在浏览器中用脚本这样调用

<script language="JavaScript" id="clientEventHandlersJS">
function callHostUI(msg)
{
window.external.Haha(msg);
}
callHostUI("hello wuChang");
</script>

[方案二,适用于vs2005]

VS2005提供的WebBrowser控件,已经实现了IDocHostUIHandler接口,使用起来就更简单了。
WebBrowser提供了

public Object ObjectForScripting { get; set; }

属性,只需要这样用就行了。

webBrowser1.ObjectForScripting = new Hello ();

调用浏览器用的脚本可以这样

webBrowser1.Document.InvokeScript("js函数名", new String[] { "参数列表 " });

更多的内容在.net FW SDK (ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.chs/CPref17/html/P_System_Windows_Forms_WebBrowser_ObjectForScripting.htm里有介绍。

.net2.0在System.Windows.Forms name spaces中提供HtmlDocument、HtmlElement等访问HTML元素的控件,使用方法在SDK里有,这里就不介绍了。

转载于:https://www.cnblogs.com/MaxWoods/archive/2008/09/25/1298684.html

用HTML做软件UI用到的的一些技术相关推荐

  1. 一种开发软件的新思路,给Web页面穿个马甲,用web页面做软件UI,用C#(或者C++等其它语言)代码做功能...

    喜欢就点一下"推荐",给我点写下去的动力,谢谢! 声明: 本文版权归作者碧血黄沙.NET所有,欢迎转载,但转载必须保留以下版权信息,且在文章页面明显位置给出原文连接,否则保留追究法 ...

  2. .Net软件UI界面测试自动化--UIAutomation技术

    在目前进行软件测试时,都或多或少的引入了自动化测试的概念,而且市面上也有好多软件自动化方面相关的工具,比如QTP,比如LoadRunner,但是这些工具要么售价不菲,要么对某些方面功能支持的不够全面, ...

  3. 轻量而敏捷的工业组态软件UI设计工具-ConPipe Studio 2022

    WPF实现组态软件-逼真的管道和速度可变流体(五) 轻量而敏捷的工业组态软件UI设计工具-机械组态篇 ConPipe Studio 2022和ConPipe控件下载地址(Trial版):ConPipe ...

  4. 【C#】winform软件UI设计模板

    最近一直在改软件UI,源码,欢迎讨论 一.简介 之前用的一个模板用的是office风格的,但是奈何最近做的系统功能并不是很多,菜单栏显得很空洞,BOSS严令整改.遂改变思路想做一个类似360的UI,但 ...

  5. 【饭谈】ChatGpt如果让软件ui都消失的话,那ui自动化测试该何去何从?

    "未来的软件长什么样?" 一位妹子产品经理问我:"你说说未来的软件ui是什么样的?听到这个问题我先是诧异了一下,随即陷入了沉思." 我看着眼前的产品经理,她是一 ...

  6. 回首我做软件这8年,如何集齐百项技术栈

    时间走的真快,一转眼,我做软件开发就要满8年了. 8年的时间里,虽然从未停止过学习,但是奈何资质所限,至今仍然是菜鸟一个. 这8年的时间里,经历了太多的技术,也认识了很多的朋友,有喜乐,有愤慨,有兴奋 ...

  7. 软件UI工程师的职责模板

    软件UI工程师的职责模板1 职责: 1.负责产品的UI视觉设计(手机软件界面 网站界面 图标设计产品广告及 企业文化的创意设计等); 2.负责公司各种客户端软件客户端的UI界面及相关图标制作; 3.设 ...

  8. AI一分钟 | 科大讯飞2017年度财报:营收54.45亿元,净利润4.35亿元;滴滴首谈无人驾驶战略:只做软件不造车

    2018 区块链技术及应用峰会(BTA)·中国 倒计时 1 天 2018,想要follow最火的区块链技术?你还差一场严谨纯粹的技术交流会--2018区块链技术及应用峰会(BTA)·中国将于2018年 ...

  9. 做软件开发10年了,我准备转行了,做自媒体

    文|洪生鹏 编辑|静子 微信公众号:洪生鹏 最近读了<能力陷阱>这本书后,感触很多. 一般来说,做人,最重要的是要有自知之明,量力而行,量体裁衣,明白自己该做什么,能做什么,该如何做.然后 ...

最新文章

  1. 微软职位内部推荐-Principal Dev Manager
  2. 计算机原理及应用第三版pdf,计算机原理及运用.pdf
  3. 计算机网络(谢希仁版)——第四章回顾(2)
  4. 【数据竞赛】五大100%奏效的特征筛选策略
  5. 当深度学习遇上图: 图神经网络的兴起!(文末送书)
  6. 【电子信息复试】考研复试常考问题——操作系统
  7. 记忆化搜索,FatMouse and Cheese
  8. python刷题+leetcode(第一部分)
  9. 西安理工大学计算机研究生名单,西安理工大学2019年硕士研究生拟录取名单
  10. HDU-3537 Mock Turtles型翻硬币游戏
  11. python day11
  12. 利用SAP 0day,四分钟内黑掉华尔街
  13. python自动搜索最佳超参数之GridSearchCV函数
  14. flask + websocket
  15. attention 文字识别算法_一文带你了解文字识别
  16. Windows API串口编程详解
  17. 系统安全——Windows中的共享文件和文件服务器
  18. Unity-黑暗之魂复刻-角色攻击
  19. maltab-图像拼接(左右两幅图)
  20. 前端的短信验证码如何做(和后端配合)

热门文章

  1. Servlet中获取请求体的数据
  2. 为什么Java在后来的版本中,给接口增加了默认方法、静态方法、私有方法?
  3. 关于压缩工具 7z(7-zip) 的选项 -so(从标准输出流写入数据)的解读
  4. Linux Distribution Timeline for 2010(Linux 2010 年发行版时间线/族谱/发展图)
  5. Linux 命令之 grep -- 强大的文本搜索工具/正则表达式搜索
  6. 计算机快捷键 还原默认值,CAD默认快捷键如何恢复?教你还原CAD默认配置的方法...
  7. 数据结构【双指针算法】
  8. edmonds算法matlab,匈牙利算法的matlab实现
  9. 学习C ,常见的误解
  10. 什么是C语言中的隐式函数声明?