1. 程式人生 > >C# WinForm 窗體應用程式,呼叫 javascript 指令碼

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 元件註冊的異常訊息(具體哪個屬相記不清了,不過沒引起整個頁面異常)

哎!最後還是改變了實現思路,變成了讓使用者看到這個輔助頁的方式。

不過也算完成了這個功能了,也還要。要不周末就鬱悶了!