Winform应用之间的通讯

建立两个项目分别为APP1和APP2,在APP1中新建窗体为form1,重命名为测试窗口,在form1中拖入一个文本框,将其test属性更改为获取数据,再拖入一个button,增加点击事件内容为:

messagebox.show("从APP2点击")

,将其text属性更改为点击;在APP2中新建窗体form2,拖入两个button,

两个事件内容分别为

 private void button1_Click(object sender, EventArgs e)
        {
            IntPtr hwnd_win;
            IntPtr hwnd_button;
            hwnd_win = FindWindow(null, "测试窗口");
            hwnd_button = FindWindowEx(hwnd_win, new IntPtr(0), null, "点击");
           // MessageBox.Show(hwnd_win.ToString());
            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, EventArgs e)
        {
            const int WM_CHAR = 0x0102;
            IntPtr hwnd_win;
            IntPtr hwnd_textbox;
            hwnd_win = FindWindow(null, "测试窗口");
            hwnd_textbox = FindWindowEx(hwnd_win, new IntPtr(0), null, "获取数据");
            string strtext = "从App2发送的测试数据";
            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 IpClassName, string IpWindowName);
        [DllImport("user32.dll")]
        public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChidAfter, string IpszClass, string IpszWindow);
        [DllImport("user32.dll",CharSet = CharSet.Unicode)]
        public static extern IntPtr PostMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr IParam);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值