2012-06-10 173 views
1

我是C#和编程新手。我有2个不同流程的应用程序,我需要尽可能简单地调用另一个应用程序的方法。我不需要交换数据或其他任何东西,只需要调用一个方法即可。我搜索了一下。我知道有很多不同的方式像管道,但我需要最简单的一种。我还发现,我可以发短信是这样的:我该如何从一个应用程序调用另一个应用程序?

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

好吧,如果你需要做的是调用不带参数的所有单一方法,最简单的是创建一个名为Mutex,从调用进程设置和接收过程进行检查。

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

+1

即使是最简单的交流,我也会去参加WCF – DoomerDGR8

+0

您能举一些使用互斥体的例子吗?非常感谢 – irondsd

相关问题