[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函數需要使用到此命名空間
private void InitializeComponent ( )
{
this.textBox1 = new System.Windows.Forms.TextBox ( ) ;
this.textBox2 = new System.Windows.Forms.TextBox ( ) ;
this.button1 = new System.Windows.Forms.Button ( ) ;
this.label1 = new System.Windows.Forms.Label ( ) ;
this.label2 = new System.Windows.Forms.Label ( ) ;
this.SuspendLayout ( ) ;
this.textBox1.Location = new System.Drawing.Point ( 124 , 58 ) ;
this.textBox1.Name = "textBox1" ;
this.textBox1.Size = new System.Drawing.Size ( 212 , 21 ) ;
this.textBox1.TabIndex = 0 ;
this.textBox1.Text = "" ;
this.textBox2.Location = new System.Drawing.Point ( 124 , 126 ) ;
this.textBox2.Multiline = true ;
this.textBox2.Name = "textBox2" ;
this.textBox2.Size = new System.Drawing.Size ( 212 , 82 ) ;
this.textBox2.TabIndex = 1 ;
this.textBox2.Text = "" ;
this.button1.Location = new System.Drawing.Point ( 122 , 232 ) ;
this.button1.Name = "button1" ;
this.button1.Size = new System.Drawing.Size ( 106 , 36 ) ;
this.button1.TabIndex = 3 ;
this.button1.Text = "發送" ;
this.button1.Click += new System.EventHandler ( this.button1_Click ) ;
this.label1.Location = new System.Drawing.Point ( 8 , 66 ) ;
this.label1.Name = "label1" ;
this.label1.Size = new System.Drawing.Size ( 132 , 23 ) ;
this.label1.TabIndex = 4 ;
this.label1.Text = "IP地址或計算機名:" ;
this.label2.Location = new System.Drawing.Point ( 78 , 134 ) ;
this.label2.Name = "label2" ;
this.label2.Size = new System.Drawing.Size ( 46 , 23 ) ;
this.label2.TabIndex = 5 ;
this.label2.Text = "內容:" ;
this.AutoScaleBaseSize = new System.Drawing.Size ( 6 , 14 ) ;
this.ClIEntSize = new System.Drawing.Size ( 356 , 297 ) ;
this.Controls.Add ( this.button1 ) ;
this.Controls.Add ( this.textBox2 ) ;
this.Controls.Add ( this.textBox1 ) ;
this.Controls.Add ( this.label2 ) ;
this.Controls.Add ( this.label1 ) ;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle ;
this.MaximizeBox = false ;
this.Name = "Form1" ;
this.Text = "Visual C#實現通訊信使" ;
this.ResumeLayout ( false ) ;
}
private void button1_Click ( object sender , System.EventArgs e )
{
byte [ ] bBuffer = System.Text.Encoding.Unicode.GetBytes ( textBox2.Text );
int nRet = NetMessageBufferSend ( null , textBox1.Text , null , textBox2.Text , textBox2.Text.Length * 2 + 2 ) ;
}
[DllImport ( "Netapi32" , CharSet = CharSet.Unicode ) ]
public static extern int NetMessageBufferSend (
string servername , //服務器名稱,為NULL
string fromname , //接收方名稱,可為IP或計算機名稱
string msgname , //信息名稱,為NULL
string buf , //信息
int buflen ) ; //信息長度