我使用C#向另一个程序发消息,不知道该怎么整,PostMessage如何引用以及PostMessage的四个参数具体定义。
千万别复制,我看所有的帖子都是复制的,统一的回答,让我脑袋疼。谢谢各位了。在线等

解决方案 »

  1.   

    不知道这样做行不
    用C++的FindWindow找到句柄
    HWND FindWindow( 
      LPCTSTR lpClassName, 
      LPCTSTR lpWindowName 
    );
    再调用如下
    Message msg = Message.Create(获取到的句柄,
     MsgWindow.WM_CUSTOMMSG,
     (IntPtr)e.X,
     (IntPtr)e.Y);
    MessageWindow.SendMessage(ref msg);
      

  2.   

    [dllimport("user32.dll")]//引入user32.dllpublic static extern intptr postmessage(intptr hwnd, int msg, int wparam, int lparam);//hwnd是另一个窗口句柄,msg消息ID
      

  3.   

    如果另一个程序是C# Winform的话,可以在form类或者其他控件类的WndProc()方法中截获消息ID为msg的消息,然后处理
      

  4.   

    声明
    [System.Runtime.InteropServices.DllImport("user32.dll")]
    public static extern int PostMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
    public const int WM_CLOSE = 0x10;调用
    PostMessage(Handle, WM_CLOSE, 0, 0);
      

  5.   

    xiaozhi_5638,前两个参数一个是另一个窗口句柄,另一个是消息内容,那第三个还第四个写零可以吗?
    还有就是消息内容的那个参数,我要传的是字符串。是否要进行转换、
      

  6.   

      [DllImport( "user32.dll ",   CharSet   =   CharSet.Unicode)] 
            public   static   extern   IntPtr   PostMessage(IntPtr   hwnd,   int   wMsg,   IntPtr   wParam,   string   lParam); 
    hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含义的两个值:
      HWND.BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口。
      NULL:此函数的操作和调用参数dwThread设置为当前线程的标识符PostThreadMessage函数一样。
      Msg:指定被寄送的消息。
      wParam:指定附加的消息特定的信息。
      IParam:指定附加的消息特定的信息。