我在C#中創建音樂播放器。這是一個用C#[WinForms]製作的單實例應用程序。目前爲了使它成爲單一實例,我正在使用以下方法。在單實例應用程序中傳遞數據c#
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首歌曲)並按下回車鍵時,會創建第二個10個實例,但它們不會將WM_COPYDATA消息發送到已經運行的實例。
那麼,什麼是使單個實例和處理數據傳遞到已經運行的實例的正確方法。或者,如果任何實例沒有運行,那麼? 我想達到的目的是當有人選擇幾首歌曲,然後按下回車鍵,那麼我怎樣才能加載這些歌曲?
*命名管道*可能? http://www.michaelfcollins3.me/blog/2013/06/10/windows-ipc-using-named-pipes.html – thepirat000
一些例子:http://stackoverflow.com/questions/13806153/example-of-named -pipes – thepirat000