告诉同一个.net应用程序它已经在运行了

本文关键字:运行 同一个 net 应用程序 | 更新日期: 2023-09-27 18:11:26

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

告诉同一个.net应用程序它已经在运行了

您可以使用此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对象,并监视磁盘上某处的文件夹。第一个应用程序可以在那里创建一个文件,你的后台应用程序会收到通知,并可以显示它的UI。

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