private static string getPath(object id11)
{
string wmiQuery = string.Format("select CommandLine from Win32_Process where ProcessId={0}", id11);
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmiQuery))
{
using (ManagementObjectCollection retObjectCollection = searcher.Get())
{
foreach (ManagementObject retObject in retObjectCollection)
{
if (retObject["CommandLine"] != null)
{
string s= (string.Format("[{0}]", retObject["CommandLine"]));
string k = s.Substring(s.IndexOf("EXE")+4);
k = k.Remove(k.IndexOf("]"));
return k;
}
return null;
}
return null;
}
}
我使用此代碼獲取記事本完整路徑。當記事本文件使用雙擊打開時,此代碼工作正常。但是,當我打開文件裏面的記事本像(文件 - >打開)...比這段代碼不工作得到一個完整的路徑。有沒有什麼方法可以找到像這樣打開文件的路徑。還有一件事我需要文件路徑不記事本可執行文件路徑。或者建議我一些其他解決方案。從C#中的進程獲取文件的完整路徑?
因此,您正在尋找在另一個程序(如記事本)中使用該應用程序中的菜單打開的文檔的完整路徑?對我來說似乎是不可能的,因爲你需要知道內部工作情況,並且該信息需要被該應用程序公開。問題的標題有點讓人誤解,因爲你沒有在尋找過程的路徑。 –
這聽起來像是一個XY問題。你有什麼使用情況,導致你想知道哪些文件在記事本中打開?你想解決什麼問題? – CodeCaster
這用於回顧OLE的舊日,程序會發布他們用一個「moniker」打開的文件,這個文件是通過迭代Running Object Table找到的。 OLE死了,過期了,推開雛菊,去製造它的製造者,它是一隻死的鸚鵡。除非您知道有關該流程的很多*或者願意以某種方式進行合作,否則您無法開展此項工作。 –