C++中的发送消息函数
LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);我想在C#中接收 C++写的dll文件里SendMessage发送的消息,请大侠们支招

解决方案 »

  1.   

    不对,你貌似理解错误了,首先SendMessage是WINDOWS API,不排除他自定义一个方法的可能性
    其次,如果是他给你发送消息,只需要制定一个句柄就够了,这里的SendMessage是用来发送消息的函数,而不是叫你用来接收的函数定义啊,如果你要截获消息重写接收消息的方法就行了
    HWND hWnd,这里面传的是窗体的句柄也就是你定义窗体的句柄
            protected override void DefWndProc(ref Message m)
            {
                if (m.Msg == WM_REQUESTFILELIST)
                {
                   
                  KeSAVEMOREFILELIST mm = (KeSAVEMOREFILELIST)Marshal.PtrToStructure(m.WParam, typeof(KeSAVEMOREFILELIST));
                 // KeSAVEFILELIST[] bbbt = new KeSAVEFILELIST[3000];            //  bbbt = mm.bFileList;
                  MessageBox.Show(mm.len + "");
                    
                  
                }
                else
                {
                    base.DefWndProc(ref m);
                }
            }
      

  2.   

    关键是 C# 如何传递 给C++的 SendMessage 里的 hWnd 的值?
      

  3.   

    靠,你一点都不懂啊,郁闷,你先回到我第一个问题吧,你要获取C++给C#发送的消息
    还是你要给C++发送消息?
    如果是第一个的话你部需要用SendMessage,需要用的是C++,你不需要调用这个方法。如果你调用了的话就是自己给自己发送消息,没有意义,你要想接受肯定不是用这个方法
      

  4.   

    问题自己解决!谢谢wjfwd2009的支持。