簡體   English   中英

C#單實例應用中的數據傳遞

[英]Data passing in single instance application of C#

我正在用 C# 創建一個音樂播放器。
它是一個用 C# [ WinForms ] 制作的單實例應用程序。 目前為了使其成為單個實例,我使用以下方法。

public static Process PriorProcess()
{
    Process curr = Process.GetCurrentProcess();
    Process[] procs = Process.GetProcessesByName(curr.ProcessName);
    foreach (Process p in procs)
    {
        if ((p.Id != curr.Id) && (p.MainModule.FileName == curr.MainModule.FileName))
        {
                return p;
        }
    }
    return null;
}

現在,每當我們向應用程序傳遞一些歌曲時,如果應用程序已經在運行,那么歌曲路徑就會使用SendMessage()函數和WM_COPYDATA結構傳遞給已經運行的實例。 它工作正常。
但是,當我一起選擇一些歌曲(例如一次選擇 10 首歌曲並按 Enter 鍵)時,會創建第二個 10 實例,但它們不會向已經運行的實例發送WM_COPYDATA消息。

那么,制作單個實例並處理傳遞給已運行實例的數據的正確方法是什么。 或者,如果任何實例沒有運行,那么?
我想要實現的是,當有人選擇幾首歌曲並按回車鍵時,我該如何加載這些歌曲?

最簡單的方法是使用 VB 類Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase ,它是一個普通的.NET class
您需要添加對Microsoft.VisualBasic程序集的引用:

這處理了單實例問題並解決了將數據傳遞給其他應用程序的問題:

創建單實例 WPF 應用程序的正確方法是什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM