zoukankan      html  css  js  c++  java
  • EXE之间传递消息

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Runtime.InteropServices;
    
    namespace WinFormSendMsg
    {
        partial class Form1 : System.Windows.Forms.Form
        {
            private System.Windows.Forms.TextBox textBox1;
            private System.Windows.Forms.Button button1;
    
            const int WM_COPYDATA = 0x004A;
    
    
            public Form1()
            {
                InitializeComponent();
            }
    
            [DllImport("User32.dll", EntryPoint = "SendMessage")]
            private static extern int SendMessage(
            int hWnd, // handle to destination window
            int Msg, // message
            int wParam, // first message parameter
            ref COPYDATASTRUCT lParam // second message parameter
            );
    
    
            [DllImport("User32.dll", EntryPoint = "FindWindow")]
            private static extern int FindWindow(string lpClassName, string
            lpWindowName);
    
    
            private void button1_Click(object sender, System.EventArgs e)
            {
                int WINDOW_HANDLER = FindWindow(null, @"接收方窗体");
                if (WINDOW_HANDLER == 0)
                {
                }
                else
                {
                    byte[] sarr = System.Text.Encoding.Default.GetBytes(this.textBox1.Text);
                    int len = sarr.Length;
    
                    COPYDATASTRUCT cds;
                    cds.dwData = (IntPtr) 100;
                    cds.lpData = this.textBox1.Text;
                    cds.cbData = len + 1;
                    SendMessage(WINDOW_HANDLER, WM_COPYDATA, 0, ref cds);
                }
    
            }
        }
    
        public struct COPYDATASTRUCT
        {
            public IntPtr dwData;
            public int cbData;
            [MarshalAs(UnmanagedType.LPStr)]
            public string lpData;
        }
    }
    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Runtime.InteropServices;
    
    namespace WindowsFormGetMsg
    {
        partial class Form1 : System.Windows.Forms.Form
        {
            private System.Windows.Forms.TextBox textBox1;
    
            const int WM_COPYDATA = 0x004A;
    
            public Form1()
            {
                InitializeComponent();
            }
    
            protected override void DefWndProc(ref System.Windows.Forms.Message m)
            {
                switch (m.Msg)
                {
                case WM_COPYDATA:
                    COPYDATASTRUCT mystr = new COPYDATASTRUCT();
                    Type mytype = mystr.GetType();
                    mystr = (COPYDATASTRUCT) m.GetLParam(mytype);
                    this.textBox1.Text = mystr.lpData;
                    break;
                default:
                    base.DefWndProc(ref m);
                    break;
                }
    
            }
        }
    
        public struct COPYDATASTRUCT
        {
            public IntPtr dwData;
            public int cbData;
            [MarshalAs(UnmanagedType.LPStr)]
            public string lpData;
        }
    }
  • 相关阅读:
    计算 MD5值
    CoreDate的使用
    Spring入门---Spring AOP编程及示例【第一天】
    Spring入门---Spring Bean的作用域【第一天】
    Spring入门---示例四----集合与数组类型注入【第一天】
    Spring入门---示例三总结反思---配置文件【第一天】
    Spring入门---示例三,Spring IOC控制反转之依赖注入【第一天】
    Spring入门---示例二,面向接口编程技术【第一天】
    Spring入门---了解七个模块,以及示例一【第一天】
    eclipse局域网项目部署(纯感想)
  • 原文地址:https://www.cnblogs.com/DoNetCShap/p/2564470.html
Copyright © 2011-2022 走看看