Beispiel #1
0
    private void SendData2(IntPtr hWnd, int id, queueData qData)
    {
        COPYDATASTRUCT2 data = new COPYDATASTRUCT2();

        data.dwData = id;    // 3; // whatever value (have to match receiver end)
        data.cbData = 256;   //System.Runtime.InteropServices.Marshal.SizeOf(UserData2);// size of UserData struct

        UserData2 userData = new UserData2();

        if (qData.sIP.Length > 240)
        {
            qData.sIP = qData.sIP.Substring(0, 240);
        }

        userData.sIP            = qData.sIP;
        userData.iPingCount     = qData.iPingCount;
        userData.iPingReplies   = qData.iPingReplies;
        userData.iPingReplyTime = qData.iPingReplyTime;
        userData.iPingTimeout   = qData.iPingTimeout;

        //copy data to unmanaged pointers
        data.lpData = Marshal.AllocCoTaskMem(data.cbData);
        Marshal.StructureToPtr(userData, data.lpData, false);

        IntPtr lpData = Marshal.AllocCoTaskMem(Marshal.SizeOf(data));

        Marshal.StructureToPtr(data, lpData, false);

        Message msg1 = Message.Create(hWnd, WM_COPYDATA, lpData, lpData);

        MessageWindow.SendMessage(ref msg1);

        Marshal.FreeCoTaskMem(data.lpData);
        Marshal.FreeCoTaskMem(lpData);
    }
Beispiel #2
0
        // Message受信
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == WM_MY_WND)
            {
                if ((int)(m.WParam) == 0x0001)
                {
                    textBox1.Text = "Pushed button1";
                }
                if ((int)(m.WParam) == 0x0002)
                {
                    textBox1.Text = "Pushed button2";
                }
            }
            if (m.Msg == WM_COPYDATA)
            {
                if ((int)(m.WParam) == 0x0000)
                {
                    COPYDATASTRUCT st = new COPYDATASTRUCT();
                    st            = (COPYDATASTRUCT)m.GetLParam(typeof(COPYDATASTRUCT));
                    textBox1.Text = st.lpData;
                }
                if ((int)(m.WParam) == 0x0001)
                {
                    COPYDATASTRUCT2 st = new COPYDATASTRUCT2();
                    st = (COPYDATASTRUCT2)m.GetLParam(typeof(COPYDATASTRUCT2));

                    msgData dt = new msgData();
                    dt = (msgData)st.lpData;

                    textBox1.Text = dt.name;
                }
            }

            base.WndProc(ref m);
        }
Beispiel #3
0
        protected override void WndProc(ref Message m)
        {
            int iMsg = m.Msg;

            System.Diagnostics.Debug.WriteLine("WndProc called...");
            switch (iMsg)
            {
            case WM_COPYDATA:
                System.Diagnostics.Debug.WriteLine("WndProc sending notification ...");
                // extract the own data from the Windows Message m
                //COPYDATASTRUCT data = (COPYDATASTRUCT)Marshal.PtrToStructure(m.LParam, typeof(COPYDATASTRUCT));
                COPYDATASTRUCT2 data = (COPYDATASTRUCT2)Marshal.PtrToStructure(m.LParam, typeof(COPYDATASTRUCT2));
                //UserData userData = (UserData)Marshal.PtrToStructure(data.lpData, typeof(UserData));
                UserData2 userData = (UserData2)Marshal.PtrToStructure(data.lpData, typeof(UserData2));

                //this._bgThread2.NotifyData(data.dwData, userData.msg);
                this._bgThread2.NotifyData(userData);
                m.Result = IntPtr.Zero;
                break;

            default:
                base.WndProc(ref m);
                break;
            }
        }
Beispiel #4
0
        // SendMEssage WM_COPYDATA ( data is struct msgData )
        private void button4_Click(object sender, EventArgs e)
        {
            // COPYDATASTRUCT2 に入れる data用構造対用意
            msgData msgdata = new msgData();

            msgdata.no   = 1;
            msgdata.name = "msgData.name";

            // WM_COPYDATA用構造体に struct msgData を設定
            COPYDATASTRUCT2 cds = new COPYDATASTRUCT2();

            cds.dwData = IntPtr.Zero;
            cds.lpData = msgdata;
            cds.cbData = Marshal.SizeOf(msgdata);

            // Message送信
            IntPtr myh = Process.GetCurrentProcess().MainWindowHandle;

            SendMessage(myh, WM_COPYDATA, 1, ref cds);
        }
Beispiel #5
0
 public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, ref COPYDATASTRUCT2 lParam);
Beispiel #6
0
        // Message受信
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == WM_MY_WND)
            {
                if ( (int)(m.WParam) == 0x0001 )
                {
                    textBox1.Text = "Pushed button1";
                }
                if ((int)(m.WParam) == 0x0002)
                {
                    textBox1.Text = "Pushed button2";
                }

            }
            if (m.Msg == WM_COPYDATA)
            {
                if ((int)(m.WParam) == 0x0000)
                {
                    COPYDATASTRUCT st = new COPYDATASTRUCT();
                    st = (COPYDATASTRUCT)m.GetLParam(typeof(COPYDATASTRUCT));
                    textBox1.Text = st.lpData;
                }
                if ((int)(m.WParam) == 0x0001)
                {
                    COPYDATASTRUCT2 st = new COPYDATASTRUCT2();
                    st = (COPYDATASTRUCT2)m.GetLParam(typeof(COPYDATASTRUCT2));

                    msgData dt = new msgData();
                    dt = (msgData)st.lpData;

                    textBox1.Text = dt.name;
                }

            }

            base.WndProc(ref m);
        }
Beispiel #7
0
 public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, ref COPYDATASTRUCT2 lParam);
Beispiel #8
0
        // SendMEssage WM_COPYDATA ( data is struct msgData )
        private void button4_Click(object sender, EventArgs e)
        {
            // COPYDATASTRUCT2 に入れる data用構造対用意
            msgData msgdata = new msgData();
            msgdata.no = 1;
            msgdata.name = "msgData.name";

            // WM_COPYDATA用構造体に struct msgData を設定
            COPYDATASTRUCT2 cds = new COPYDATASTRUCT2();
            cds.dwData = IntPtr.Zero;
            cds.lpData = msgdata;
            cds.cbData = Marshal.SizeOf(msgdata);

            // Message送信
            IntPtr myh = Process.GetCurrentProcess().MainWindowHandle;
            SendMessage(myh, WM_COPYDATA, 1, ref cds);
        }
        private void SendData2(IntPtr hWnd, int id, queueData qData)
        {
            COPYDATASTRUCT2 data = new COPYDATASTRUCT2();

            data.dwData = id;// 3; // whatever value (have to match receiver end)
            data.cbData = 256; //System.Runtime.InteropServices.Marshal.SizeOf(UserData2);// size of UserData struct

            UserData2 userData = new UserData2();
            if (qData.sIP.Length > 240)
            {
                qData.sIP = qData.sIP.Substring(0, 240);
            }

            userData.sIP = qData.sIP;
            userData.iPingCount = qData.iPingCount;
            userData.iPingReplies = qData.iPingReplies;
            userData.iPingReplyTime = qData.iPingReplyTime;
            userData.iPingTimeout = qData.iPingTimeout;

            //copy data to unmanaged pointers
            data.lpData = Marshal.AllocCoTaskMem(data.cbData);
            Marshal.StructureToPtr( userData, data.lpData, false);

            IntPtr lpData = Marshal.AllocCoTaskMem(Marshal.SizeOf(data));
            Marshal.StructureToPtr(data, lpData, false);

            Message msg1 = Message.Create(hWnd, WM_COPYDATA, lpData, lpData);
            MessageWindow.SendMessage(ref msg1);

            Marshal.FreeCoTaskMem(data.lpData);
            Marshal.FreeCoTaskMem(lpData);
        }