c#windows消息循環sendmessage實例

[DllImport("User32.dll", EntryPoint = "SendMessage")]
        private static extern int SendMessage(
        IntPtr hWnd,        // 信息發往的窗口的句柄  
        int Msg,            // 消息ID  
        int wParam,         // 參數1  
        string lParam
        );
        [DllImport("User32.dll", EntryPoint = "SendMessage")]
        private static extern int SendMessage2(
       IntPtr hWnd,        // 信息發往的窗口的句柄  
       int Msg,            // 消息ID  
       int wParam,         // 參數1  
       IntPtr lParam
       );

        [DllImport("User32.dll", EntryPoint = "FindWindow")]
        private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);

        [DllImport("User32.dll", EntryPoint = "FindWindowEx")]
        private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpClassName, string lpWindowName);

 

private void button4_Click(object sender, EventArgs e)
        {
          IntPtr hwnd=   FindWindow(null, "testForm");
            string info = "my info:ΑΒβδγζηθ";
          IntPtr pinfo= Marshal.StringToHGlobalAnsi(info);
            SendMessage2(hwnd, Form2.USERMESSAGEID, 12, pinfo);
            SendMessage(hwnd, Form2.USERMESSAGEID, 12, info);
        }

 

public  const int  USERMESSAGEID =0x2021;
        protected override void WndProc(ref Message m)
        {
             switch(m.Msg)
            {
                case USERMESSAGEID:
                   {
                        int wparam= m.WParam.ToInt32();
                        string str = Marshal.PtrToStringAnsi(m.LParam);
                        break;
                    }

            }
            base.WndProc(ref m);
        }

 

[DllImport("User32.dll", EntryPoint = "SendMessage")]
        private static extern int SendMessage(
        IntPtr hWnd,        // 信息發往的窗口的句柄  
        int Msg,            // 消息ID  
        int wParam,         // 參數1  
        ref My_lParam lParam
        );

 

IntPtr ptr = FindWindow(null, "主界面");
                    SendMessage(ptr, PublicCs.DefineConst.MYMESSAGE_SCAN_REAGENT, 1, ref m);//發送消息

 

protected override void DefWndProc(ref Message m)
        {
            try
            {
                switch (m.Msg)
                {
                    //掃描試劑條消息處理
                    case PublicCs.DefineConst.MYMESSAGE_SCAN_REAGENT:
                        ReagentManager.FrmReagentScan.My_lParam ml_Scan = new ReagentManager.FrmReagentScan.My_lParam();
                        Type t_Scan = ml_Scan.GetType();
                        ml_Scan = (ReagentManager.FrmReagentScan.My_lParam)m.GetLParam(t_Scan);
                        for (int i = 0; i < ml_Scan.iReagent_Place.Count();i++ )
                        {
                            if (i_Scan_Reagent_Place[i]==0)
                            {
                                i_Scan_Reagent_Place[i] = ml_Scan.iReagent_Place[i];
                            }
                        }
                        
                        #region 根據試劑位選擇掃描試劑架
                        // 試劑架1
                        for (int i = 0; i < 10;i++ )
                        {
                            if (ml_Scan.iReagent_Place[i]==1)
                            {
                                Scann_Reagent(0, ml_Scan.iArm);
                                break;
                            }
                        }
                        // 試劑架2
                        for (int i = 0; i < 10; i++)
                        {
                            if (ml_Scan.iReagent_Place[10+i] == 1)
                            {
                                Scann_Reagent(1, ml_Scan.iArm);
                                break;
                            }
                        }
                        // 試劑架3
                        for (int i = 0; i < 10; i++)
                        {
                            if (ml_Scan.iReagent_Place[20+i] == 1)
                            {
                                Scann_Reagent(2, ml_Scan.iArm);
                                break;
                            }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章