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死了,过期了,推开雏菊,去制造它的制造者,它是一只死的鹦鹉。除非您知道有关该流程的很多*或者愿意以某种方式进行合作,否则您无法开展此项工作。 –