Visual C 實現Windows信使服務

2021-09-05 15:03:36 字數 3704 閱讀 4638

一.簡介windows的信使服務及其使用方法:

首先進入"控制面板",在"管理工具"中選擇"服務"後,就可以得到如圖01所示介面,圖01就是windows服務的執行視窗:

圖01:計算機windows"服務"執行介面

信使服務在windows作業系統中對應的服務名稱是"messager"。windows作業系統給此服務的定義是"傳送和接收系統管理員或者"警報器"服務傳遞的訊息。"在預設狀態信使服務是啟動的,如果發現它處於"停止"或者"已禁用"狀態,請啟動它,因為後面介紹的程式能夠正常執行的條件之一就算此服務處於"啟動"狀態。

利用windows系統也可以通過信使服務傳送資訊,具體操作如下:

1. 在"桌面"上選中"我的電腦"後,單擊滑鼠右鍵,在彈出的選單中選擇"管理"後,彈出"計算機管理"對話方塊:

2. 開啟"共享資料夾",選中"共享"後,單擊滑鼠右鍵,在彈出的選單中選擇"所有任務"中的"傳送控制台訊息",具體如圖02所示,當完成以上操作就可以得到如圖03所示介面:

圖02:利用"信使服務"實現資訊傳送介面之一

3. 在圖03所示介面中,單擊"新增"按鈕,輸入要傳送到的計算機的ip位址或主機名稱,在"訊息"文字框中輸入要傳送的資訊後,單擊"傳送"按鈕,則資訊就通過信使服務傳送到對方了。

圖03:利用"信使服務"實現資訊傳送介面之一

以上就是利用windows的自身的信使服務來傳送資訊的具體步驟。

二.visual c#通過信使服務實現網路資訊傳送關鍵技術:

雖然.net framework sdk中提供了許多開發網路程式的類庫,但這些類庫中卻沒有提供呼叫信史服務的方法,所以要呼叫信史方法只有使用winapi函式,這個winapi函式netmessagebuffersend,它位於"netapi32.dll"檔案中。以下就是netmessagebuffersend函式在visual c#中的宣告方法:

[dllimport ( "netapi32" , charset = charset.unicode ) ]

public static extern int netmessagebuffersend (

string servername , //伺服器名稱,為null

string fromname , //接收方名稱,可為ip或計算機名稱

string msgname , //資訊名稱,為null

string buf , //資訊

int buflen ) ; //首席資訊官度

對照netmessagebuffersend函式引數分別輸入相應的接收方名稱和資訊內容即可,可見netmessagebuffersend的使用方法還是非常簡單的。下面就來詳細介紹visual c#通過信史服務實現網路資訊傳送的具體實現方法。

(1).微軟公司視窗2000伺服器版。

(2).visual studio .net 2003企業構建版,.net framework sdk 1.1版本號4322。

四.visual c#通過信史服務實現網路資訊傳送的具體實現步驟:

以下就是visual c#通過信史服務實現網路資訊傳送的具體實現步驟:

1. 啟動visual studio .net。

2. 選擇選單【檔案】|【新建】|【專案】後,彈出【新建專案】對話方塊。

3. 將【專案型別】設定為【visual c#專案】。

4. 將【模板】設定為【windows應用程式】。

5. 在【名稱】文字框中輸入【visual c#實現通訊信使】。

6. 在【位置】的文字框中輸入【e:\vs.net專案】,然後單擊【確定】按鈕。這樣在"e:\vs.net專案"目錄中就建立了乙個名稱為"visual c#實現通訊信使"的資料夾,裡面存放的就是"visual c#實現通訊信使"專案的所有檔案。

7. 把visual studio .net的當前視窗切換到【form1.cs(設計)】視窗,並從【工具箱】中的【windows窗體元件】選項卡中往設計窗體中拖入下列元件,並執行相應操作:

二個lable元件。

二個textbox元件,分別用來輸入接收方的ip位址或計算機名和傳送資訊內容。

乙個button按鈕,並在這個元件拖入設計視窗後分別雙擊它們,則系統會在form1.cs中分別產生這乙個元件click事件對應的處理**。

8. 把visual studio .net的當前視窗切換到form1.cs的**編輯視窗,在form1.cs的首部的引入命名空間的**區中,用下列**替換form1.cs中由系統自動產生的引入命名空間**:

using system ;

using system.drawing ;

using system.collections ;

using system.componentmodel ;

using system.windows.forms ;

using system.data ;

using system.runtime.interopservices ;

//申明winapi函式需要使用到此命名空間

9. 以下面**替代系統產生的initializecomponent過程。下面**是對加入窗體的元件以及建立的全域性變數進行初始化和定義乙個button元件的click事件:

private void initializecomponent ( )

至此【visual c#實現通訊信使】專案的介面設計和功能實現的前期工作就完成了,設計介面如圖04所示:

圖04:【visual c#實現通訊信使】專案的設計介面

10. 在form1.cs中的main過程之後新增下列**,下列**的作用是定義button1的click事件,在此事件中呼叫申明的netmessagebuffersend函式,把資訊通過信史服務傳送到指定的網路計算機上去:

private void button1_click ( object sender , system.eventargs e )

11. 在新增完button1的click事件後,再新增下列**,下列**的作用是申明netmessagebuffersend函式:

[dllimport ( "netapi32" , charset = charset.unicode ) ]

public static extern int netmessagebuffersend (

string servername , //伺服器名稱,為null

string fromname , //接收方名稱,可為ip或計算機名稱

string msgname , //資訊名稱,為null

string buf , //資訊

int buflen ) ; //首席資訊官度

至此,在上述步驟都正確完成,並全部儲存後,【visual c#實現通訊信使】專案的全部工作就完成了。此時單擊快捷鍵【f5】執行程式後,在【ip位址或計算機名:】文字框中輸入對方的ip位址或計算機名,在【內容:】文字框中輸入要傳送的資訊後,單擊【傳送】按鈕,則程式就會把輸入的資訊傳送到指定的網路計算機上了。

五.總結:

visual c#通過信史服務實現網路資訊傳送的關鍵是要了解、掌握netmessagebuffersend函式在visual c#中的申明、呼叫方法,雖然.net推出以及三年多了,但仍有很多不完善的地方,有時要借助於com,有時要借助於winapi函式才能順利解決,本文就是乙個典型的例子。我想隨著時間的推移,.net framework sdk一定會更加完善,netmessagebuffersend等winapi函式一定也會在其中找到相應的位置,這樣也就減少了程式設計師的工作難度,也給程式帶來更高的穩定性。

運用Visual C 完成Window管道技術

管道技術一般採用window api來實現,最近我試著用c 來實現windows管道技術,發現c 本身方便的程序執行緒機制使工作變得簡單至極,隨手記錄一下,推薦給大家。首先,我們可以通過設定process類,獲取輸出介面,如下 process proc new process proc starti...

用Visual C 輕鬆實現報表處理

資料庫在企業軟體系統中應用廣泛,而報表的顯示與列印成為此類軟體必備的功能 前言資料庫在企業軟體系統中應用廣泛,而報表的顯示與列印成為此類軟體必備的功能。可惜vc 並沒有整合報表處理工具,但其強大的功能再加上市面上功能完備的報表處理工具使這一工作變得容易,本文介紹了在vc 環境中利用seagate公司...

用Visual C 實現網路封包監視

本文向大家介紹windows sockets的一些關於用c 實現的原始套接字 raw socket 的程式設計,以及在此基礎上實現的網路封包監視技術。同winsock1相比,winsock2最明顯的就是支援了raw socket套接字型別,使用raw socket,可把網絡卡設定成混雜模式,在這種模...