JavaScript與C# Windows應(yīng)用程序交互方法
更新時(shí)間:2007年06月29日 00:00:00 作者:
一、建立網(wǎng)頁(yè)
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<script language="javascript" type="text/javascript">
<!-- 提供給C#程序調(diào)用的方法 -->
function messageBox(message)
{
alert(message);
}
</script>
</head>
<body>
<!-- 調(diào)用C#方法 -->
<button onclick="window.external.MyMessageBox('javascript訪問(wèn)C#代碼')" >
javascript訪問(wèn)C#代碼</button>
</body>
</html>
二、建立Windows應(yīng)用程序
1. 創(chuàng)建Windows應(yīng)用程序項(xiàng)目
2. 在Form1窗體中添加WebBrowser控件
3. 在Form1類(lèi)的上方添加
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
這是為了將該類(lèi)設(shè)置為com可訪問(wèn)。如果不進(jìn)行該聲明將會(huì)出錯(cuò)。出錯(cuò)信息如下圖所示:
如:
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form
4.初始化WebBrowser的Url與ObjectForScripting兩個(gè)屬性。
Url屬性:WebBrowser控件顯示的網(wǎng)頁(yè)路徑
ObjectForScripting屬性:該對(duì)象可由顯示在WebBrowser控件中的網(wǎng)頁(yè)所包含的腳本代碼訪問(wèn)。
將Url屬性設(shè)置為需要進(jìn)行操作的頁(yè)的URL路徑。
JavaScript通過(guò)window.external調(diào)用C#公開(kāi)的方法。即由ObjectForScripting屬性設(shè)置的類(lèi)的實(shí)例中所包含的公共方法。具體設(shè)置例子如下:
System.IO.FileInfo file = new System.IO.FileInfo("index.htm");
// WebBrowser控件顯示的網(wǎng)頁(yè)路徑
webBrowser1.Url = new Uri(file.FullName);
// 將當(dāng)前類(lèi)設(shè)置為可由腳本訪問(wèn)
webBrowser1.ObjectForScripting = this;
5.C#調(diào)用JavaScript方法
通過(guò)WebBrowser類(lèi)的Document屬性中的InvokeScript方法調(diào)用當(dāng)前網(wǎng)頁(yè)的Javascript方法。如:
// 調(diào)用JavaScript的messageBox方法,并傳入?yún)?shù)
object[] objects = new object[1];
objects[0] = "C#訪問(wèn)JavaScript腳本";
webBrowser1.Document.InvokeScript("messageBox", objects);
完整代碼如下:
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
System.IO.FileInfo file = new System.IO.FileInfo("index.htm");
// WebBrowser控件顯示的網(wǎng)頁(yè)路徑
webBrowser1.Url = new Uri(file.FullName);
// 將當(dāng)前類(lèi)設(shè)置為可由腳本訪問(wèn)
webBrowser1.ObjectForScripting = this;
}
private void button1_Click(object sender, EventArgs e)
{
// 調(diào)用JavaScript的messageBox方法,并傳入?yún)?shù)
object[] objects = new object[1];
objects[0] = "C#訪問(wèn)JavaScript腳本";
webBrowser1.Document.InvokeScript("messageBox", objects);
}
// 提供給JavaScript調(diào)用的方法
public void MyMessageBox(string message)
{
MessageBox.Show(message);
}
}
Dnew.cn 注:原文:http://www.cnblogs.com/xds/archive/2007/03/02/661838.html
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<script language="javascript" type="text/javascript">
<!-- 提供給C#程序調(diào)用的方法 -->
function messageBox(message)
{
alert(message);
}
</script>
</head>
<body>
<!-- 調(diào)用C#方法 -->
<button onclick="window.external.MyMessageBox('javascript訪問(wèn)C#代碼')" >
javascript訪問(wèn)C#代碼</button>
</body>
</html>
二、建立Windows應(yīng)用程序
1. 創(chuàng)建Windows應(yīng)用程序項(xiàng)目
2. 在Form1窗體中添加WebBrowser控件
3. 在Form1類(lèi)的上方添加
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
這是為了將該類(lèi)設(shè)置為com可訪問(wèn)。如果不進(jìn)行該聲明將會(huì)出錯(cuò)。出錯(cuò)信息如下圖所示:
如:
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form
4.初始化WebBrowser的Url與ObjectForScripting兩個(gè)屬性。
Url屬性:WebBrowser控件顯示的網(wǎng)頁(yè)路徑
ObjectForScripting屬性:該對(duì)象可由顯示在WebBrowser控件中的網(wǎng)頁(yè)所包含的腳本代碼訪問(wèn)。
將Url屬性設(shè)置為需要進(jìn)行操作的頁(yè)的URL路徑。
JavaScript通過(guò)window.external調(diào)用C#公開(kāi)的方法。即由ObjectForScripting屬性設(shè)置的類(lèi)的實(shí)例中所包含的公共方法。具體設(shè)置例子如下:
System.IO.FileInfo file = new System.IO.FileInfo("index.htm");
// WebBrowser控件顯示的網(wǎng)頁(yè)路徑
webBrowser1.Url = new Uri(file.FullName);
// 將當(dāng)前類(lèi)設(shè)置為可由腳本訪問(wèn)
webBrowser1.ObjectForScripting = this;
5.C#調(diào)用JavaScript方法
通過(guò)WebBrowser類(lèi)的Document屬性中的InvokeScript方法調(diào)用當(dāng)前網(wǎng)頁(yè)的Javascript方法。如:
// 調(diào)用JavaScript的messageBox方法,并傳入?yún)?shù)
object[] objects = new object[1];
objects[0] = "C#訪問(wèn)JavaScript腳本";
webBrowser1.Document.InvokeScript("messageBox", objects);
完整代碼如下:
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
System.IO.FileInfo file = new System.IO.FileInfo("index.htm");
// WebBrowser控件顯示的網(wǎng)頁(yè)路徑
webBrowser1.Url = new Uri(file.FullName);
// 將當(dāng)前類(lèi)設(shè)置為可由腳本訪問(wèn)
webBrowser1.ObjectForScripting = this;
}
private void button1_Click(object sender, EventArgs e)
{
// 調(diào)用JavaScript的messageBox方法,并傳入?yún)?shù)
object[] objects = new object[1];
objects[0] = "C#訪問(wèn)JavaScript腳本";
webBrowser1.Document.InvokeScript("messageBox", objects);
}
// 提供給JavaScript調(diào)用的方法
public void MyMessageBox(string message)
{
MessageBox.Show(message);
}
}
Dnew.cn 注:原文:http://www.cnblogs.com/xds/archive/2007/03/02/661838.html
您可能感興趣的文章:
- Windows系統(tǒng)中使用C#編寫(xiě)藍(lán)牙通信程序的簡(jiǎn)單實(shí)例
- c#.NET中日志信息寫(xiě)入Windows日志中解決方案
- 基于C#實(shí)現(xiàn)的仿windows左側(cè)伸縮菜單效果
- c#創(chuàng)建windows服務(wù)入門(mén)教程實(shí)例
- C#編寫(xiě)Windows服務(wù)程序詳細(xì)步驟詳解(圖文)
- 基于C#實(shí)現(xiàn)Windows服務(wù)狀態(tài)啟動(dòng)和停止服務(wù)的方法
- C#通過(guò)創(chuàng)建Windows服務(wù)啟動(dòng)程序的方法詳解
- c#開(kāi)發(fā)的程序安裝時(shí)動(dòng)態(tài)指定windows服務(wù)名稱(chēng)
- C#編寫(xiě)Windows服務(wù)實(shí)例代碼
- C#用Topshelf創(chuàng)建Windows服務(wù)的步驟分享
相關(guān)文章
node.js+express+mySQL+ejs+bootstrop實(shí)現(xiàn)網(wǎng)站登錄注冊(cè)功能
這篇文章主要介紹了node.js+express+mySQL+ejs+bootstrop實(shí)現(xiàn)網(wǎng)站登錄注冊(cè)功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-01-01元素未顯示設(shè)置width/height時(shí)IE中使用currentStyle獲取為auto
元素未顯示設(shè)置width/height時(shí)IE中無(wú)法使用currentStyle獲取,默認(rèn)獲取值為auto,需要的朋友可以參考下2014-05-05微信小程序?qū)崿F(xiàn)活動(dòng)報(bào)名登記功能(實(shí)例代碼)
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)活動(dòng)報(bào)名登記,本篇將介紹使用微信小程序?qū)崿F(xiàn)發(fā)起一個(gè)活動(dòng)報(bào)名的設(shè)計(jì),以此為基礎(chǔ),我們可以掌握微信小程序表單的基本用法,進(jìn)而在諸如疫情信息登記、出入報(bào)備等場(chǎng)景中使用小程序進(jìn)行開(kāi)發(fā),滿足相關(guān)的需求,需要的朋友可以參考下2022-09-09ES6 Promise對(duì)象的應(yīng)用實(shí)例分析
這篇文章主要介紹了ES6 Promise對(duì)象的應(yīng)用,結(jié)合實(shí)例形式分析了Promise對(duì)象原理與異步處理相關(guān)操作技巧,需要的朋友可以參考下2019-06-06基于JS實(shí)現(xiàn)前端壓縮上傳圖片的實(shí)例代碼
這篇文章主要介紹了基于JS實(shí)現(xiàn)前端壓縮上傳圖片的實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-05-05