我试图获取所有打开的应用程序的列表。具体来说,如果您打开任务管理器并转到应用程序选项卡,该列表。获取所有应用程序的列表
我用这样的尝试:
foreach (var p in Process.GetProcesses())
{
try
{
if (!String.IsNullOrEmpty(p.MainWindowTitle))
{
sb.Append("\r\n");
sb.Append("Window title: " + p.MainWindowTitle.ToString());
sb.Append("\r\n");
}
}
catch
{
}
}
就像我已经发现了几个例子,但是这并不把所有的应用程序给我。它只能抓取我在任务管理器中看到的一半,或者我知道我已经打开。例如,这种方法出于某种原因不会使用Notepad ++或Skype,但可以使用Google Chrome,计算器和Microsoft Word。
有谁知道为什么这不能正常工作或如何做?
此外,一位朋友建议它可能是一个权限问题,但我以管理员身份运行visual studio,并且没有更改。
编辑:我得到的问题是,我给出的大多数解决方案只返回所有进程的列表,这不是我想要的。我只想要打开的应用程序或窗口,就像任务管理器上显示的列表一样。不是每一个进程的列表。
此外,我知道这里有错误的代码,包括空的catch块。这是一个一劳永逸的计划,只是为了弄清楚这是如何工作的。
可能是因为这些应用没有主窗口标题。 – cgTag
如果你的程序有一个主窗口标题你可以做这样的事情Chris Process [] processes = Process.GetProcesses(); foreach(var proc in processes) if(!string.IsNullOrEmpty(proc.MainWindowTitle)) Console.WriteLine(proc.MainWindowTitle); } 你也可以使用'WMI' http://msdn.microsoft.com/en-us/library/windows/desktop/aa394599%28v=vs.85%29.aspx – MethodMan
你甚至在看你的代码'复制和粘贴? –