你这个需求的目的是什么?
一般可以在应用程序间通过socket或消息队列来处理

解决方案 »

  1.   

    http://www.cnblogs.com/index/archive/2005/01/16/92651.html
      

  2.   

    http://www.vchelp.net/itbookreview/view_paper.asp?paper_id=757
      

  3.   

    我做了实验,可以实现:
    看看代码:第一个应用程序中Form的代码如下: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!");
     }
      

  4.   

    第二个应用程序中Form的代码如下: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);
    }
     
      

  5.   

    接收端 Public Class Form1
        Inherits System.Windows.Forms.Form
        Dim receivesocket As New Net.Sockets.Socket
          (Net.Sockets.AddressFamily.InterNetwork,
          Net.Sockets.SocketType.Stream,
          Net.Sockets.ProtocolType.Tcp)
        Private Sub Form1_Load(ByVal sender As System.Object,
            ByVal e As System.EventArgs) Handles MyBase.Load
            Dim hostipendpiont As New Net.IPEndPoint
      (Net.IPAddress.Parse("192.168.0.1"), 8888)
            receivesocket.Bind(hostipendpiont)
      '建立远程计算机的的socket
            receivesocket.Listen(2)'监听socket
        End Sub    Private Sub Button1_Click(ByVal sender As Object,
          ByVal e As System.EventArgs) Handles Button1.Click
            Dim recfs As New IO.FileStream("p.doc",
      IO.FileMode.OpenOrCreate)
      '接收数据并将其保存到一个新的文件中
            Dim recbyte(229888) As Byte
            Dim hostsocket As Net.Sockets.Socket =
      receivesocket.Accept()
      '同意和发送端计算机建立连接
            Dim newfilestr As New IO.BinaryWriter(recfs)'流写
            hostsocket.Receive(recbyte)
            'recfs.Write(recbyte, 0, recbyte.Length - 1)
            newfilestr.Write(recbyte, 0, recbyte.Length - 1)
            recfs.Close()
            hostsocket.Shutdown(Net.Sockets.SocketShutdown.Receive)
            hostsocket.Close()
        End Sub
    End Class 
      

  6.   

    hedonister的好用,技术含量高,谢谢