A. webbrowser調用winform方法
這個需要2方面的開發,比如單擊按鈕時,輸出一個特定的字元串到WebBrowser
而Winform在WebBrowser的相應事件里監控WebBrowser的輸出內容,如果輸出的是這個特定字元串,就執行相應的操作
B. webapi怎麼調用winform(CS)中的方法(cs是服務端必須先獨立啟動)
有解決方案:建立CS程序與WebApi伺服器的點對點連接(通過Tcp/ip),然後WebApi發起請求,CS程序返回請求結果。
詳細一點:CS端開啟tcp.ip的監聽埠,webapi伺服器連接這個埠,需要掌握網路編程技能。網路搜索C# 網路編程相關的源碼。
若CS端沒有開啟外網IP,還需要穿透NAT(類似QQ聊天,網路編程高級篇),這里有文章參考一下: C#實現UDP穿透NAT(UDP打洞)完整版(原)
www.csframework.com/archive/2/arc-2-20110713-1693.htm
C. 在web頁面上如何彈出winform窗體
window.showModalDialog("modal.htm",null,"dialogWidth=200px;dialogHeight=100px");
這是最簡單的模式對話框,三個參數 彈出窗體的地址,參數,和彈出窗體的樣式。
D. 一個winform調用web服務,當服務程序更新時,winform調用失敗,winform重新啟動又可以調用了。
當你的服務程序更新的時候,Windows檢查到調用的介面和你web服務提供的介面發生改變,只有再重新編譯的時候,才會自動調用web服務最新提供的介面。
E. 如何創建,發布Web Service和 C#WINFORM里如何調用WEB Service API
一、創建和發布Web
Service
Web服務方法中可以返回一個DataSet對象
WEB服務可以說是下一代WEB應用程序的基礎,無論客戶端是WINDOWS應用、ASP.NET Web
Form程序、甚至其他語言的客戶端,都可以與同一個WEB服務通信,其平台和語言無關性使其有了廣闊的發展空間。
利用VS2005和IIS我們可以很容易地發布一個WEB
SERVICE,因為其中有幾個細節需要注意,所在初學者常常在這里出現問題,現通過一個簡單的例子說明如何創建和發布一個WEB SERVICE。
環境:Windows Server 2003,.Net FrameWork 2.0,IIS6.0
工具:VS2005
1.首先VS2005中新建一個WEB服務項目。
打開「文件」-「新建」-「網站」,在對話框中選擇「ASP.NET Web服務」,VS2005會自動生成一個Service.cs文件,包含如下代碼:
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service
:
System.Web.Services.WebService
{
public Service
()
{
//如果使用設計的組件,請取消注釋以下行
//InitializeComponent();
}
[WebMethod]
public string HelloWorld()
{
return "Hello
World";
}
}
你可以在這里修改自己的命名空間,加入自己的方法,但本文只是為了說明如何創建和發布,所以對Service.cs不做任何更改。
2.生成網站
很簡單,「生成」-「生成網站」或直接Shift+F6
3.發布網站
也是簡單,「生成」-「發布網站」,這里會彈出一個對話框,什麼也不需要修改,記下發布的目錄。比如:D:/我的文檔/Visual Studio
2005/Projects/WebSite1/PrecompiledWeb/WebSite1,我們需要目錄下的文件。
4.配置IIS
在你的WEB目錄下一個文件夾,比如webservice,並將第3步發布目錄中的所有文件和目錄拷貝到這個目錄中,打開IIS,找到你的站點,在這個webservice目錄上點右鍵,選擇屬性,在彈出對話框的「目錄」選擇項卡中點擊「創建」按鈕,然後確定即可。
到這時,已經大功告成,你可以通過訪問http://域名/webservice/Service.asmx來驗證。頁面會出現如下圖所示內容:
注意:除了需要在IIS中對服務目錄創建程序外,還要注意防火牆或殺毒軟體的設置,我在首次訪問service.asmx文件時,殺毒軟體報告w3wp.exe在系統文件夾中生成asp_code.dll等,應該允許其他創建,否則會無法訪問。
通過這樣簡單的方法,你可以輕松建立自己的WEB服務,在同一站點還可以有多個WEB服務。
二、c#的winform中調用Web Service
API(VB6.0也可以調用該web服務)
現在以C# WinForm為例談談如何使用它
,在服務中我們只有一個自動生成的方法:HelloWord(),其實現如下:
[WebMethod]
public string HelloWorld(){
return "Hello
World";
}
在WINFORM中我們將添加一個按鈕,添加單擊事件,在事件處理函數中彈出一個對話框顯示HelloWord的結果。
1.添加WEB引用
在VS2005中新建一個Windows應用程序項目,取名testwebservice,在項目中添加一個WEB引用,可在「解決方案資源管理器」的項目名上點右鍵添加,在彈出對話框中的URL輸入框中輸入WEB伺服器的路徑:如http://你的域名/web服務務路徑/service.asmx,點擊「前行」按鈕後會搜索這個服務,並在右邊報告找到的服務,並在左邊顯示service.asmx頁面,我們在WEB引用名輸入框中輸入一個名字,這個將做為程序中WEB服務的命名空間名,這里我們取名mywebservice。
2.添加按鈕單擊事件
在Form中拖出一個Button按鈕,雙擊單擊事件處理方法,代碼如下:
private void button1_Click(object sender,
EventArgs e)
{
mywebservice.Service
ws = new testwebservice.mywebservice.Service();
MessageBox.Show (ws.HelloWorld());
}
其中mywebservice.Service ws = new
testwebservice.mywebservice.Service()是實例化一個WEB服務對象,ws.HelloWorld()是調用WEB服務中的這個HelloWorld方法,其返回字元串將用MessageBox.Show()函數顯示出來。
好了,最簡單的一個調用WEB服務API的WinForm例子已經完成了,編譯運行,單擊按鈕,將會彈出對話框顯示「Hello World」信息。
重要的一點,在.net的WEB服務API中,除了一般的數據類型外,還可以返回結構和DataSet對象,有了這一點,就可以構建我們大多數的資料庫應用了。
好了,接下來的工作就是在WEB服務中添加你的API完成你的工作了。
轉載僅供參考,版權屬於原作者。祝你愉快,滿意請採納哦
F. 在web頁面用js調用winform 窗體據說用ActiveObject請各位大蝦發個實例,越詳細越好!
新建一個類,這個類裡面的方法就是提供給JS調用的
[ComVisible(true)]
public class JSCall
{
public JSCall()
{
}
//此方法可在JS中調用 ()
public void Test(string message)
{
MessageBox.Show(message);
}
}
然後把WebBrowser的ObjectForScripting屬性設置成實例化成上面的類;
就是 webBrowser.ObjectForScripting = new JSCall();
最後在JS調用:window.external.Test(「JSTest」);
G. c#winform怎麼調用webservice
建議這樣試試看:
親測可用,主要還是Url的拼接,這個需要客戶給出格式
/// <summary>
/// 與客戶WMS系統通訊獲取數據
/// </summary>
/// <param name="url">介面,需要拼接成客戶規定的格式</param>
/// <param name="data">請求數據,需要拼接成客戶規定的Json格式</param>
/// <returns>全部數據</returns>
public string Post(string url, string data)
{
try
{
//創建請求
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
//設置請求方法
request.Method = "Post";
request.Referer = "";
//將數據轉換為UTF8位元組流
byte[] bytes = Encoding.UTF8.GetBytes(data);
//設置發送的位元組數
request.ContentLength = bytes.Length;
//設置發送內容格式
request.ContentType = "application/json; charset=UTF-8";
//獲取用於寫入請求數據的流對象
Stream stream = request.GetRequestStream();
//向當前流寫入數據,發送請求
stream.Write(bytes, 0, bytes.Length);
//接收返迴流,通過Web訪問對象獲取響應內容
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//通過響應內容流創建StreamReader對象
//StreamReader sr = new StreamReader(request.GetRequestStream(), Encoding.UTF8);//寫錯,導致一直讀取不了數據
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
//讀取所有內容
string retString = sr.ReadToEnd();
//關閉流
sr.Close();
stream.Close();
if (response != null)
{
//關閉響應流
response.Close();
}
if (request != null)
{
//取消請求
request.Abort();
}
return retString;
}
catch (Exception ex)
{
throw ex;
}
}
}
H. Winform 調用 WebService如何獲取數據
在webconfig裡面把post打開
然後就行了
————
補充一下吧
在service裡面寫
[WebMethod]
public string aaa(string id)
{
return id;
}
I. 如何用winform調用webservice的數據並顯示
添加web引用時,會要求給此引用取名,一般 這個會被我們忘記,不過他有默認的名字 是 WebReference
然後這樣寫 WebReference.你的webservice的名字 w=new WebReference.你的webservice名字();
要是不行的話,你就重新添加web引用,記住引用的名字(假設為a)
然後 a.你的webservice的名字 w=new a.你的webservice名字();
J. 在web中調用winform怎麼弄
在許多人的博客中可以看到有這樣的小玩意, , 點擊下就可以和博主進行對話,而且無需加博主為好友。很顯然,這是騰訊在web頁中的調用自己的QQ,那麼他們是怎麼做的呢?
我們先看一下騰訊給我們提供的代碼:
<a href="tencent://message/?uin=88888888&Site=JooIT.com&Menu=yes">
<img border="0" SRC='http://is.qq.com/webpresence/images/status/01_online.gif' alt="點擊這里給我發消息">
</a>
很顯然,奧妙就在「tencent://message/?uin=215555521&Site=JooIT.com&Menu=yes」這里,那這又到底是什麼原理呢?
我們想一下,如果要打開本地的QQ,肯定要分兩步走,首先是定位到QQ,然後是傳遞給它一些參數,也就是「uin=uin=88888888&Site=JooIT.com&Menu=yes」這樣的東西。定位的話,藉助注冊表是最明顯的方式了。可怎麼把QQ跑起來呢?要我們自己去啟動一個進程么?(當然也可以,不過有更簡單的何必呢),答案是否定的,Windows操作系統考慮了這一點,允許我們為自己的應用程序注冊為一個協議處理者,具體參見MSDN上的文章《Registering
an Application to a URL Protocol》。
騰訊的Tencent://Message協議注冊表如下:
知道了原理,那麼我們照葫蘆畫瓢的做個DemoSA實驗一下:
打開Visual Studio 2008(你也可以用其他的開發工具,Delphi,VB都可以),新建一個Windows
Forms項目,在默認的Form1里添加一個Label控制項(這里是為了顯示傳遞過來的參數用的,你也可以不這么做),在窗體的Load事件里寫上如下代碼:
this.label1.Text = strArgs;//是Form1的聲明為:Public的String類型變數
為了讓我們的程序支持命令行參數(winform程序默認沒有命令行參數),我們再到Programs.cs里對Main()函數進行改造。
改造後的代碼如下:
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.(false);
Form1 frm = new Form1();
if (args.Length >0)
{
frm.strArgs = args[0];
Application.Run(frm);
}
else
{
Application.Run(new Form1());
}
}
將項目編譯。
好了,來到最關鍵的步驟了,在注冊表中為我們自定義的helloworld協議建立起注冊表項,從而讓HelloWorld應用程序支持此協議。將如下的注冊表項加入即可,這里為了簡單起見我直接用一個.reg文件來實現,也可以用其他方式進行:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\HelloWorld]
@="HelloWorld Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\HelloWorld\DefaultIcon]
@="D:\\My Documents\\Visual Studio 2005\\Projects\\HelloWorld\\release\\HelloWorld.exe,1"
[HKEY_CLASSES_ROOT\HelloWorld\shell]
@=""
[HKEY_CLASSES_ROOT\HelloWorld\shell\open]
@=""
[HKEY_CLASSES_ROOT\HelloWorld\shell\open\command]
@="\"D:\\My Documents\\Visual Studio 2005\\Projects\\HelloWorld\\release\\HelloWorld.exe\" \"%1\""
好了,這下可以來測試helloworld協議了,在地址欄中輸入:helloworld://hello world/,怎麼樣,下面的畫面出來了吧,
再來到web頁面進行測試,修改上面的html代碼如下:
<html>
<head></head>
<body>
<div>
<a href="helloworld://hello world">
<img border="0" SRC='http://is.qq.com/webpresence/images/status/01_online.gif' alt="點擊這里給我發消息">
</a>
</div>
</body>
</html>
若是要在web頁面調用本地的winform程序,同理也是可行的。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Tencent]
@="TencentProtocol"
"URL Protocol"="D:\\Program Files\\Tencent\\QQ\\Timwp.exe"
[HKEY_CLASSES_ROOT\Tencent\DefaultIcon]
@="D:\\Program Files\\Tencent\\QQ\\Timwp.exe,1"
[HKEY_CLASSES_ROOT\Tencent\shell]
[HKEY_CLASSES_ROOT\Tencent\shell\open]
[HKEY_CLASSES_ROOT\Tencent\shell\open\command]@="\"D:\\Program Files\\Tencent\\QQ\\Timwp.exe\" \"%1\""
此注冊表所實現的就是當瀏覽器(或其它)碰到 tencent://… 時,自動調用 Timwp.exe,並把 tencent://… 地址作為第一個參數傳遞給 Timwp.exe。