2008-09-04 23 views
2

我們有一個有趣的案例,我們試圖確定如何啓動我們的應用程序的不同實例。有沒有辦法讓.NET能夠查詢另一個正在運行的實例並獲取傳遞給該實例的命令行參數?到目前爲止,我還沒有找到任何方法來完成它,所以我想我會在這裏查看是否有人做過這樣的事情。.NET可以檢查其他正在運行的程序的命令行參數嗎?

回答

2

通常,這些變量存儲在程序的內存空間中,您應該(理論上)應該無法訪問這些變量。

您需要了解如何啓動與其他實例和交易數據的進程間通信。命名管道是一個不錯的選擇,但你可能想要開始一個新的stackoverflow問題來獲得這個好的選擇。

-Adam

0

爲了將來的參考,這裏是我如何得到它的工作代碼片段。這只是一個測試,看看它是如何工作的。實際實現的代碼解析我們需要的命令行參數。

try 
{ 
    ManagementScope connectScope = new ManagementScope(); 
    connectScope.Path = new ManagementPath(@"\\" + Environment.MachineName + @"\root\CIMV2"); 

    SelectQuery msQuery = new SelectQuery("SELECT * FROM Win32_Process Where Name = '" + "PROGRAMNAMEHERE.exe" + "'"); 
    ManagementObjectSearcher searchProcedure = new ManagementObjectSearcher(connectScope, msQuery); 

    foreach (ManagementObject item in searchProcedure.Get()) 
    { 
     try 
     { 
     MessageBox.Show(item["CommandLine"].ToString()); 
     } 
     catch (SystemException) 
     {} 
    } 
} 
相關問題