日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# message简单实现窗口间信息接收与发送

發(fā)布時(shí)間:2023/12/4 C# 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# message简单实现窗口间信息接收与发送 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

剛接觸windows 不同程序 窗口消息傳遞,不理解IntPtr SendMessage(int hWnd, int msg, IntPtr wParam, IntPtr lParam)這函數(shù)怎么用?消息內(nèi)容怎么傳遞過去,還遇到需要message結(jié)構(gòu)體?IntPtr怎么用呢?

但實(shí)際只是用來傳個(gè)數(shù)據(jù),不需要這么復(fù)雜,就簡單寫了下面程序。


1.發(fā)送端


public partial class Form1 : Form{private const int WM_USER = 0x0400; //自定義消息號(hào)一般開始于0x0400,[DllImport("User32.dll", EntryPoint = "SendMessage")]private static extern IntPtr SendMessage(int hWnd, int msg, IntPtr wParam, IntPtr lParam); //發(fā)送消息函數(shù)。//找出窗口句柄handler,用起來方便。有看到過返回值時(shí)IntPtr[DllImport("User32.dll", EntryPoint = "FindWindow")]private static extern int FindWindow(string lpClassName, string lpWindowName); public Form1(){InitializeComponent();this.Text = "消費(fèi)者";label1.Text = "向X300A";}private void button1_Click(object sender, EventArgs e){int WINDOW_HANDLER; //int msgNum;if(int.TryParse(textBox1.Text,out msgNum)==false) //獲取用戶信息內(nèi)容,這里只接受數(shù)字。{return;}WINDOW_HANDLER = FindWindow(null, "X300A");//通過窗口標(biāo)題,獲得句柄SendMessage(WINDOW_HANDLER, WM_USER, new IntPtr(msgNum), IntPtr.Zero);//前面兩個(gè)參數(shù),基本固定格式。//后面兩個(gè)參數(shù),把需要傳遞的參數(shù)轉(zhuǎn)為IntPtr,就好了。//第四個(gè)參數(shù)因?yàn)闆]什么傳的,這里就設(shè)為空}}

2.接收端


public partial class Form1 : Form{private const int WM_USER = 0x0400; //自定義消息號(hào)一般開始于0x0400,發(fā)送端也是設(shè)置成這個(gè)public Form1(){InitializeComponent();this.Text = "X300A";label1.Text = "接收消費(fèi)者信息";}protected override void WndProc(ref Message m) //重新函數(shù),處理接收的信息{switch (m.Msg){case WM_USER:string message = m.WParam.ToString(); //轉(zhuǎn)換成string類型,這樣就能接收到發(fā)送端信息。textBox1.AppendText("接受到信息:"+message+"\n");Popup p1 = new Popup(); //自定義的一個(gè)窗口if(p1.ShowDialog()==DialogResult.OK) {p1.Dispose();textBox1.AppendText("啟動(dòng)完畢\n");}break;default: break;}base.WndProc(ref m);}}
3.演示圖



參考鏈接:

http://blog.sina.com.cn/s/blog_45eaa01a01013zbs.html

總結(jié)

以上是生活随笔為你收集整理的C# message简单实现窗口间信息接收与发送的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。