进程间通讯(转别人的windform)

mac2022-06-30  39

<接收方>

public partial class FormServer : Form     {         const int WM_COPYDATA = 0x004A;

        public FormServer()         {             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;     }

 

<发送方>

        const int WM_COPYDATA = 0x004A;

        public FormClient()         {             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 MCOPYDATASTRUCT 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, @"AAAAA");             if (WINDOW_HANDLER == 0)             {             }             else             {                 byte[] sarr = System.Text.Encoding.Default.GetBytes(this.textBox1.Text);                 int len = sarr.Length;                 MCOPYDATASTRUCT cds;                 cds.dwData = (IntPtr)100;                 cds.lpData = this.textBox1.Text;                 cds.cbData = len + 1;                 SendMessage(WINDOW_HANDLER, WM_COPYDATA, 0, ref cds);             }         }         struct MCOPYDATASTRUCT         {             public IntPtr dwData;             public int cbData;             [MarshalAs(UnmanagedType.LPStr)]             public string lpData;         }

转载于:https://www.cnblogs.com/fanybul/archive/2009/05/14/1456990.html

最新回复(0)