日期:2014-05-18 浏览次数:21323 次
[DllImport("User32.dll", EntryPoint = "SendMessageA")] private static extern int SendMessage( int hWnd, // handle to destination window int Msg, // message int wParam, // first message parameter string lParam // second message parameter ); private static extern int FindWindow(string lpClassName, string lpWindowName); public static void SendMsgToFlashForm(int MSG, IntPtr wParam, string lParam) { int WINDOW_HANDLER = FindWindow(null, @"XXXX"); if (WINDOW_HANDLER == 0) { throw new Exception("Could not find Main window!"); } SendMessage(WINDOW_HANDLER, MSG, wParam, lParam); }
MessageController.SendMsgToFlashForm(MessageManager.MyMessage.WM_SHOW_PROCESS, IntPtr.Zero, "系统开始创建核心对象");
try { switch (m.Msg) { case Utility.CommonUtility.MessageManager.MyMessage.WM_SHOW_PROCESS: { label2.Text = m.LParam.ToString(); break; } default: base.DefWndProc(ref m);//调用基类函数处理非自定义消息。 break; } }
用StringBuild private static extern int SendMessage( int hWnd, // handle to destination window int Msg, // message int wParam, // first message parameter StringBuild lParam // second message parameter );
------解决方案--------------------
同进程可以这样:
[DllImport("User32.dll")] private static extern int SendMessage(int hWnd, int Msg, int wParam, string lParam); private const int WM_USER = 0x0400; private void button1_Click(object sender, EventArgs e) { SendMessage((int)Handle, WM_USER + 10, 0, "Zswang 路过"); } protected override void WndProc(ref Message m) { switch (m.Msg) { case WM_USER + 10: MessageBox.Show(Marshal.PtrToStringAnsi(m.LParam)); break; } base.WndProc(ref m); }
------解决方案--------------------