我怎样才能从一个应用程序到另一个应用程序?

时间:2012-06-10 06:45:34

标签: c# ipc sendmessage

我是C#和编程的新手。我有2个具有不同进程的应用程序,我需要能够尽可能简单地从另一个应用程序调用1个应用程序的方法。我不需要交换数据或其他任何东西,只需要调用一个方法。我用Google搜索了一下。我知道管道有许多不同的方法,但我需要最简单的方法。我还发现我可以发送这样的信息:

const uint WM_COPY = 0x301;

[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int SendMessage(IntPtr hWnd, uint uMsg, int wParam, int lParam);

Process p = Process.GetProcessesByName("appname").FirstOrDefault();
if(p != null)
{
    IntPtr hWnd = p.MainWindowHandle;
    SendMessage(hWnd, WM_COPY , 0, 0);
}

我能够收到包含以下代码的消息:

protected override void WndProc(ref Message m)
{
    if (m.Msg == WM_COPY)
    {
        //my code
    }
    else
    {
        base.WndProc(ref m);
    }
}

但是有一个问题。应该收到消息的应用程序没有表单,它只是一个进程。我已经使用过this.Hide(),所以MainWindowHandle将不起作用。

是否可以向具有隐藏表单的应用发送消息?或者也许有更好的方法在第二个应用程序上调用方法?感谢。

1 个答案:

答案 0 :(得分:1)

好吧,如果您只需要调用一个没有参数的单个方法,最简单的方法是创建一个名为Mutex,从调用进程设置它并从接收进程中检查它。

如果您需要更精细的内容,请查看WCF