告诉同样的.net应用程序,它已经在运行

时间:2014-07-03 19:27:58

标签: c# .net wpf process mutex

我有一个WPF应用程序,我在计算机启动时启动了隐藏窗口,所以它就像一个后台任务。它有时会与某个网站同步,当它发现有一些新的日期时会显示一个弹出窗口。用户还应该以他开始新应用的方式显示标准GUI。我可以通过新应用程序中的Mutex 检测到它是新的,我不想要它并将其关闭,但我不知道应该告诉旧应用程序应该显示GUI。知道怎么做吗?我不需要发布一些字符串或类似的东西我只需要在旧应用程序中执行某种方法。

1 个答案:

答案 0 :(得分:1)

您可以使用此API调用向其发送Windows消息。然后在隐藏的后台应用程序中,您可以检查此消息,并显示您的UI:

[DllImport("User32.dll")]
public static extern Int32 SendMessage(int hWnd, int Msg, int wParam, [MarshalAs(UnmanagedType.LPStr)] string lParam);

在您的后台应用表单中,覆盖WndProc处理程序:

protected override void WndProc(ref Message msg)
    {
        // filter messages here for your purposes
        if (msg.wParam = MY_MESSAGE_CONSTANT) { ShowUI(); } 
        base.WndProc(ref msg);
    }

另一种方法是使用FileSystemWatcher对象,并在某处查看磁盘上的文件夹。第一个应用可以在那里创建一个文件,并且会通知您的后台应用并显示它的用户界面。

http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.110).aspx