一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - C#實現(xiàn)在應用程序間發(fā)送消息的方法示例

C#實現(xiàn)在應用程序間發(fā)送消息的方法示例

2022-01-11 14:04kongxx C#

這篇文章主要介紹了C#實現(xiàn)在應用程序間發(fā)送消息的方法,結合具體實例形式分析了C#實現(xiàn)項目之間信息發(fā)送、接收等交互操作相關技巧,需要的朋友可以參考下

本文實例講述了C#實現(xiàn)在應用程序間發(fā)送消息的方法。分享給大家供大家參考,具體如下:

首先建立兩個C#應用程序項目。

第一個項目包含一個Windows Form(Form1),在Form1上有一個Button和一個TextBox。

第二個項目包含一個Windows Form(Form1),在Form1上有兩個Button,分別用來測試第一個應用程序中Button的Click事件和修改第一個應用程序中TextBox的值。

第一個應用程序中Form的代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
public class Form1 : System.Windows.Forms.Form {
 private System.Windows.Forms.Button button1;
 private System.Windows.Forms.TextBox textBox1;
 private System.ComponentModel.Container components = null;
 [STAThread]
 static void Main() {
 Application.Run(new Form1());
 }
 public Form1()
 {
 InitializeComponent();
 }
 protected override void Dispose( bool disposing )
 {
 if( disposing )
 {
 if(components != null)
 {
 components.Dispose();
 }
 }
 base.Dispose( disposing );
 }
 #region Windows 窗體設計器生成的代碼
 private void InitializeComponent()
 {
 this.button1 = new System.Windows.Forms.Button();
 this.textBox1 = new System.Windows.Forms.TextBox();
 this.SuspendLayout();
 //
 // button1
 //
 this.button1.Location = new System.Drawing.Point(32, 24);
 this.button1.Name = "button1";
 this.button1.TabIndex = 0;
 this.button1.Text = "button1";
 this.button1.Click += new System.EventHandler(this.button1_Click);
 //
 // textBox1
 //
 this.textBox1.Location = new System.Drawing.Point(32, 64);
 this.textBox1.Name = "textBox1";
 this.textBox1.TabIndex = 1;
 this.textBox1.Text = "textBox1";
 //
 // Form1
 //
 this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
 this.ClientSize = new System.Drawing.Size(292, 266);
 this.Controls.Add(this.textBox1);
 this.Controls.Add(this.button1);
 this.Name = "Form1";
 this.Text = "Form1";
 this.ResumeLayout(false);
 }
 #endregion
 private void button1_Click(object sender, System.EventArgs e) {
 MessageBox.Show("This is button1 click!");
 }
}

第二個應用程序中Form的代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
using System;
using System.Text;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Runtime.InteropServices;
public class TestForm1 : System.Windows.Forms.Form {
 private System.Windows.Forms.Button button1;
 private System.Windows.Forms.Button button2;
 private System.ComponentModel.Container components = null;
 [STAThread]
 static void Main() {
 Application.Run(new TestForm1());
 }
 public TestForm1()
 {
 InitializeComponent();
 }
 protected override void Dispose( bool disposing )
 {
 if( disposing )
 {
 if(components != null)
 {
 components.Dispose();
 }
 }
 base.Dispose( disposing );
 }
 #region Windows 窗體設計器生成的代碼
 private void InitializeComponent()
 {
 this.button1 = new System.Windows.Forms.Button();
 this.button2 = new System.Windows.Forms.Button();
 this.SuspendLayout();
 //
 // button1
 //
 this.button1.Location = new System.Drawing.Point(32, 24);
 this.button1.Name = "button1";
 this.button1.TabIndex = 0;
 this.button1.Text = "button1";
 this.button1.Click += new System.EventHandler(this.button1_Click);
 //
 // button2
 //
 this.button2.Location = new System.Drawing.Point(32, 64);
 this.button2.Name = "button2";
 this.button2.TabIndex = 0;
 this.button2.Text = "button2";
 this.button2.Click += new System.EventHandler(this.button2_Click);
 //
 // TestForm1
 //
 this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
 this.ClientSize = new System.Drawing.Size(292, 266);
 this.Controls.Add(this.button1);
 this.Controls.Add(this.button2);
 this.Name = "TestForm1";
 this.Text = "TestForm1";
 this.ResumeLayout(false);
 }
 #endregion
 private void button1_Click(object sender, System.EventArgs e) {
 IntPtr hwnd_win ;
 IntPtr hwnd_button ;
 hwnd_win = FindWindow("WindowsForms10.Window.8.app3","Form1");
 hwnd_button = FindWindowEx(hwnd_win ,new IntPtr(0) ,"WindowsForms10.BUTTON.app3","button1");
 const int BM_CLICK = 0x00F5;
 Message msg = Message.Create(hwnd_button ,BM_CLICK ,new IntPtr(0),new IntPtr(0));
 PostMessage(msg.HWnd ,msg.Msg ,msg.WParam ,msg.LParam);
 }
 private void button2_Click(object sender, System.EventArgs e) {
 const int WM_CHAR = 0x0102;
 IntPtr hwnd_win ;
 IntPtr hwnd_textbox ;
 hwnd_win = FindWindow("WindowsForms10.Window.8.app3","Form1");
 hwnd_textbox = FindWindowEx(hwnd_win ,new IntPtr(0) ,"WindowsForms10.EDIT.app3","textBox1");
 string strtext = "測試aaa";
 UnicodeEncoding encode = new UnicodeEncoding();
 char[] chars = encode.GetChars(encode.GetBytes(strtext));
 Message msg ;
 foreach (char c in chars ) {
 msg = Message.Create(hwnd_textbox ,WM_CHAR ,new IntPtr(c),new IntPtr(0));
 PostMessage(msg.HWnd ,msg.Msg ,msg.WParam ,msg.LParam);
 }
 }
 [DllImport("user32.dll")]
 public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
 [DllImport("user32.dll")]
 public static extern IntPtr FindWindowEx(IntPtr hwndParent,IntPtr hwndChildAfter,string lpszClass,string lpszWindow);
 [DllImport("user32.dll",CharSet=CharSet.Unicode)]
 public static extern IntPtr PostMessage(IntPtr hwnd,int wMsg,IntPtr wParam,IntPtr lParam);
}

以上代碼可以在VS.NET中編譯運行,也可以使用csc.exe編譯,如使用一下命令行:

?
1
2
F:>csc.exe Form1.cs
F:>csc.exe TestForm1.cs

編譯后生成兩個.exe文件。

首先運行第一個程序,顯示Form1窗體,然后運行第二個程序,顯示TestForm1窗體。

在TestForm1窗體上點擊button1按鈕(向Form1窗體上的button1發(fā)送消息)此時顯示對話框提示“This is button1 click!”。

在TestForm1窗體上點擊button2按鈕(向Form1窗體上的textBox1發(fā)送消息)此時在Form1上的textBox1上顯示“測試aaa”。

希望本文所述對大家C#程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 四虎音影 | 国产精品永久免费自在线观看 | 日韩欧美不卡片 | 草草在线免费视频 | 9191精品国产观看 | 非洲黑女人性xxxx | 午夜久久免影院欧洲 | 欧美国产精品久久 | 国产欧美日韩精品一区二 | 男人和女人日比 | 国产在线视频在线观看 | 精品视频一区二区观看 | 亚洲AV无码偷拍在线观看 | 爽好舒服宝贝添奶吻戏 | 国产视频91在线 | 日韩一级欧美一级一级国产 | 天天干夜夜噜 | 国产日产在线观看 | 国产精品66福利在线观看 | 国产乱子伦真实china | 国产专区亚洲欧美另类在线 | 91啦在线播放 | 久久久久久久久性潮 | 国产精品秒播无毒不卡 | 视频在线91| 九九热在线观看视频 | 4hu四虎永久网址 | 日本韩国推理片免费观看网站 | 欧美3p大片在线观看完整版 | 日本 在线观看 | 亚洲AV无码国产精品色午夜情 | 国产成年人网站 | 麻豆找网服 | 大杳蕉在线影院在线播放 | 操一炮| avtt天堂在线 | 成年人在线免费观看视频网站 | 国产精品高清一区二区三区不卡 | 欧美在线成人免费国产 | 5278欧美一区二区三区 | 久久精品国产免费播高清无卡 |