正在阅读:使用C#在应用程序间发送消息使用C#在应用程序间发送消息

2004-08-11 10:13 出处:太平洋电脑网 作者:kongxx 责任编辑:huangpeidan


  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编译,如使用一下命令行:

  F:>csc.exe Form1.cs
  F:>csc.exe TestForm1.cs

  编译后生成两个.exe文件。

  首先运行第一个程序,显示Form1窗体,然后运行第二个程序,显示TestForm1窗体。

  在TestForm1窗体上点击button1按钮(向Form1窗体上的button1发送消息)此时显示对话框提示“This is button1 click!”。

  在TestForm1窗体上点击button2按钮(向Form1窗体上的textBox1发送消息)此时在Form1上的textBox1上显示“测试aaa”。


察看评论详细内容 我要发表评论
作者笔名 简短内容 发表时间
:
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品