C# WinForm 窗体应用程序,调用 javascript 脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# WinForm 窗体应用程序,调用 javascript 脚本相关的知识,希望对你有一定的参考价值。


 场景描述

今天做了个功能,要访问第三方系统数据,

他们提供 Com 组件,我们使用的是 winform 调用 com组件访问对方提供的xml数据!

结果,com 组件在 winform 中调用 com 组件失败!实在无语了!

和对方工程师沟通他们测试没问题。更郁闷了!

他们提供一个测试页,是用一个静态页调用的。

我们拿到了这个测试页,在本地运行也没问题!比较怪异啊~~~~~~

是在没辙了,就像到“如何用 winform 程序调用静态页中的脚本呢?”

功夫不负有心人,终于找到调用方法。总算搞定了这个功能!

----------------------------------------------

 

下面总结一下遇到的问题和实现思路!

思路:

使用 .net 提供的 WebBrowser 控件,在执行这个控件提供的

webBrowser1.Document.InvokeScript() 方法调用 javascript 脚本

第一个参数:页面脚本的【名字】

第二个参数:脚本需要的参数,以 new object[] “pra1”,"par2" ...... 形式提供

方法返回值:为 object 类型的一个值

----------------------------------------------

举个例子吧
页面脚本为
function Add(num1,num2)

return num1+num2;

winform 窗体条用为
object result = webBrowser1.Document.InvokeScript("Add",new object[]100,200) ;

----------------------------------------------

遇到的问题:

本来这个页面是个辅助数据导出页,没必要让使用者看到,

但是,在调用javascript脚本方法时总是没有返回值(null),

跟了好久,发现如果把页面展现出来在调用就不会有问题,

还发现,当不显示当前窗口是 webBrowser1.Document 中

有一个关于 com 组件注册的异常消息(具体哪个属相记不清了,不过没引起整个页面异常)

哎!最后还是改变了实现思路,变成了让用户看到这个辅助页的方式。

不过也算完成了这个功能了,也还要。要不周末就郁闷了!

 

以上是关于C# WinForm 窗体应用程序,调用 javascript 脚本的主要内容,如果未能解决你的问题,请参考以下文章

C# Winform中如何实现窗体之间的跳转

C# winform 跨线程操作winform程序窗体

winform 窗体加载的问题,C#里不同Panel中窗体的调用

winform 窗体加载的问题,C#里不同Panel中窗体的调用

C# winform怎么实现子窗体关闭时刷新父窗体数据

(C#)怎样在一个窗口中调用另一个窗口中的dataGridView