C#如何获取任务管理器中应用程序列表名称,不是进程

C#如何获取任务管理器中应用程序列表名称,不是进程获取如下图信息如果是以下这个方法的就别回答了,这个方法,获取不到图上的QQ那个应用程序的,请各位高手帮忙这是获取程序Pr... C#如何获取任务管理器中应用程序列表名称,不是进程
获取如下图信息

如果是以下这个方法的就别回答了,这个方法,获取不到图上的QQ那个应用程序的,请各位高手帮忙
这是获取程序
Process[] ps=Process.GetProcesses();

foreach (Process p in ps)

{

if (p.MainWindowHandle != null)

{

richTextBox1.Text += p.MainWindowTitle + "";

}

}

#region 查找所有应用程序标题

private const int GW_HWNDFIRST = 0;
private const int GW_HWNDNEXT = 2;
private const int GWL_STYLE = (-16);
private const int WS_VISIBLE = 268435456;
private const int WS_BORDER = 8388608;

#region AIP声明
[DllImport("IpHlpApi.dll")]
extern static public uint GetIfTable(byte[] pIfTable, ref uint pdwSize, bool bOrder);

[DllImport("User32")]
private extern static int GetWindow(int hWnd, int wCmd);

[DllImport("User32")]
private extern static int GetWindowLongA(int hWnd, int wIndx);

[DllImport("user32.dll")]
private static extern bool GetWindowText(int hWnd, StringBuilder title, int maxBufSize);

[DllImport("user32", CharSet = CharSet.Auto)]
private extern static int GetWindowTextLength(IntPtr hWnd);
#endregion
/// <summary>
/// 查找所有应用程序标题
/// </summary>
/// <returns>应用程序标题范型</returns>
public static List<string> FindAllApps(int Handle)
{
List<string> Apps = new List<string>();

int hwCurr;
hwCurr = GetWindow(Handle, GW_HWNDFIRST);

while (hwCurr > 0)
{
int IsTask = (WS_VISIBLE | WS_BORDER);
int lngStyle = GetWindowLongA(hwCurr, GWL_STYLE);
bool TaskWindow = ((lngStyle & IsTask) == IsTask);
if (TaskWindow)
{
int length = GetWindowTextLength(new IntPtr(hwCurr));
StringBuilder sb = new StringBuilder(2 * length + 1);
GetWindowText(hwCurr, sb, sb.Capacity);
string strTitle = sb.ToString();
if (!string.IsNullOrEmpty(strTitle))
{
Apps.Add(strTitle);
}
}
hwCurr = GetWindow(hwCurr, GW_HWNDNEXT);
}

return Apps;
}
#endregion

调用

private void btReApp_Click(object sender, EventArgs e)
{
LvApp.Items.Clear();
List<string> Apps = SystemInfo.FindAllApps((int)this.Handle);
foreach (string app in Apps)
{
ListViewItem item = new ListViewItem(app);
LvApp.Items.Add(item);
}
}
以上的方法无法获取任务管理器里面所有的应用程序,如果用进程获取的话,比如打开多个QQ窗口,他也只能获取到最新打开的那个QQ任务,我的意图是进程只能显示一个QQ进程
,但是任务管理器的应用程序确实显示几个QQ窗口,我要获得这些信息
RayNCC朋友,请回答的详细点,最后是附上代码。谢谢
展开
 我来答
RayNCC
2010-12-14 · TA获得超过615个赞
知道小有建树答主
回答量:452
采纳率:0%
帮助的人:618万
展开全部
你用EnumWindows API试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式