中文一二三区_九九在线中文字幕无码_国产一二区av_38激情网_欧美一区=区三区_亚洲高清免费观看在线视频

首頁(yè) > 考試輔導(dǎo) > 計(jì)算機(jī)考試 > 軟件水平考試 > 軟件水平學(xué)習(xí)指南 > 使用C#在應(yīng)用程序之間發(fā)送消息

使用C#在應(yīng)用程序之間發(fā)送消息

       首先建立兩個(gè)c#應(yīng)用程序項(xiàng)目。
  
  第一個(gè)項(xiàng)目包含一個(gè)windows form(form1),在form1上有一個(gè)button和一個(gè)textbox。
  
  第二個(gè)項(xiàng)目包含一個(gè)windows form(form1),在form1上有兩個(gè)button,分別用來測(cè)試第一個(gè)應(yīng)用程序中button的click事件和修改第一個(gè)應(yīng)用程序中textbox的值。
  
  第一個(gè)應(yīng)用程序中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 窗體設(shè)計(jì)器生成的代碼
   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!");
   }
  }
  
  第二個(gè)應(yīng)用程序中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 窗體設(shè)計(jì)器生成的代碼
   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 = "測(cè)試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);
  }
  
  以上代碼可以在中編譯運(yùn)行,也可以使用csc.exe編譯,如使用一下命令行:
  
  f:>csc.exe form1.cs
  
  f:>csc.exe testform1.cs
  
  編譯后生成兩個(gè).exe文件。
  
  首先運(yùn)行第一個(gè)程序,顯示form1窗體,然后運(yùn)行第二個(gè)程序,顯示testform1窗體。
  
  在testform1窗體上點(diǎn)擊button1按鈕(向form1窗體上的button1發(fā)送消息)此時(shí)顯示對(duì)話框提示“this is button1 click!”。
  
  在testform1窗體上點(diǎn)擊button2按鈕(向form1窗體上的textbox1發(fā)送消息)此時(shí)在form1上的textbox1上顯示“測(cè)試aaa”。

首先建立兩個(gè)c#應(yīng)用程序項(xiàng)目。
  
  第一個(gè)項(xiàng)目包含一個(gè)windows form(form1),在form1上有一個(gè)button和一個(gè)textbox。
  
  第二個(gè)項(xiàng)目包含一個(gè)windows form(form1),在form1上有兩個(gè)button,分別用來測(cè)試第一個(gè)應(yīng)用程序中button的click事件和修改第一個(gè)應(yīng)用程序中textbox的值。
  
  第一個(gè)應(yīng)用程序中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 窗體設(shè)計(jì)器生成的代碼
   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
主站蜘蛛池模板: 久久久SS麻豆欧美国产日韩 | 99久久国产自偷自偷免费一区 | av网站一区 | 日韩欧美中文字幕公布 | 欧美大黑BBBBBBBBB| 99精品欧美一区二区三区黑人哦 | 国产永久黄网站色视频免费 | 丰满护士巨好爽好大乳小说 | 国产精品亚洲专区无码唯爱网 | 青青青国产免费线在 | 久久久久亚洲国产 | 欧美怡红院免费全部视频 | 国产乱色国产精品免费视频 | 亚洲人成网站77777·C0M | 少妇又紧又粗又爽的视频 | 亚洲国产成人影院在线播放 | 国产91会所女技师在线观 | 天天狠天天透天天伊人 | 日韩中文字幕无码一区二区三区 | 美女扒开内裤无遮挡18禁 | 天海翼精品一区二区三区 | 欧美日换| 一级毛片欧美真人视频 | 精品视频在线观看一区二区三区 | 波多野结衣多次高潮三个老人 | 国产伦孑沙发午休精品 | 黄色aaaa | 国产一级特黄a高潮片 | 蜜臀av一区二区三区 | 亚洲国产精品二区 | 99热r| 亚洲自偷自偷在线制服 | 一二三区不卡 | 欧美第一网站 | 中文字幕在线视频免费网站 | 亚洲精品综合网 | 最近的中文字幕在线mv视频 | 国产嫖妓风韵犹存对白 | 国产网红主播精品av | 精品人妻无码一区二区三区50 | aⅴ中文字幕不卡在线无码 德国肥妇性猛交视频 |