首页>计算机>软件水平考试>复习指导>正文
软件水平考试:使用C#在应用程序之间发送消息

www.zige365.com 2008-11-24 22:54:01 点击:发送给好友 和学友门交流一下 收藏到我的会员中心

   #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编译,如使用一下命令行:
  
  F:>csc.exe Form1.cs
  
  F:>csc.exe TestForm1.cs
  
  编译后生成两个.exe文件。
  
  首先运行第一个程序,显示Form1窗体,然后运行第二个程序,显示TestForm1窗体。
  

本新闻共3页,当前在第2页  1  2  3  

我要投稿 新闻来源: 编辑: 作者:
相关新闻
软件水平考试C#.Net网络程序开发基础之Socket篇
软考辅导:如何使用ADO.NET轻松操纵数据库