【发布时间】:2011-09-07 16:38:50
【问题描述】:
我正在此应用程序中的一个应用程序中工作,我将等待应用程序 1 中的某个事件,当此事件发生时,我将向应用程序 2 发送消息,该应用程序将执行某些操作。
第一个 API 声明
private const int HWND_BROADCAST = 0xffff;
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern int RegisterWindowMessage(string lpString);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern bool SendNotifyMessage(int hWnd, int Msg, int wParam, int lParam);
应用程序 1 代码
private string msgstr = "MYMESSAGE";
public int msg = RegisterWindowMessage(msgstr);
if (msg == 0)
{
MessageBox.Show(Marshal.GetLastWin32Error().ToString());
}
//SendNotifyMessage(HWND_BROADCAST, msg, 4848484, 8484865);
SendNotifyMessage(HWND_BROADCAST, msg, 0, 0);
MessageBox.Show(Marshal.GetLastWin32Error().ToString());
应用程序 2 代码
static readonly int msg = RegisterWindowMessage("MYMESSAGE");
protected override void WndProc(ref Message m)
{
if (m.Msg == msg)
{
MessageBox.Show(m.Msg.ToString() + " = from wndproc");
}
base.WndProc(ref m);
}
有人会指出这段代码有什么问题吗? 我怀疑 SendNotifyMessage 有问题
lparam 和 wparam 参数
有人会建议我实现这种行为的其他替代方法吗?
【问题讨论】: