如何获取Windows应用程序列表

转载 2004年08月17日 23:50:00

来自:唐细刚的专栏

http://blog.csdn.net/tanaya/archive/2004/08/11/71041.aspx

Windows任务管理器的应用程序栏包含任务窗口的列表。要获取此列表,窗口必须满足以下几个条件:

(1) 必须可见
(2)
包含一个标题
(3) 不能被其他窗口包含

下面我给出源程序和调用示例:

VC++源代码(使用VC6):

//获取任务列表且添加到列表框中.
BOOL GetAppList(CListBox &LstBox)
{
  CString strCaption;
  LstBox.ResetContent();
  ASSERT_VALID(AfxGetMainWnd());
  CWnd *pWnd=AfxGetMainWnd()->GetWindow(GW_HWNDFIRST);
  if(pWnd==NULL) return FALSE;
  while(pWnd)
  {
   if(pWnd->IsWindowVisible() && pWnd->GetWindowTextLength() && !pWnd->GetOwner())
     {
       pWnd->GetWindowText(strCaption);
       LstBox.AddString(strCaption);
     }
   pWnd=pWnd->GetWindow(GW_HWNDNEXT);
  }
  return TRUE;
}

//调用示例:
void CGetAppListDlg::OnGetAppList()
{
   GetAppList(m_ListBox1);
}


VB源代码(使用VB6,具体调用很简单,我就不写了)

Option Explicit
Private Declare Function GetWindowLongPtr Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long

Private Const GW_OWNER = 4
Private Const GWL_EXSTYLE = (-20)

Private Const WS_EX_TOOLWINDOW = &H80
Private Const WS_EX_APPWINDOW = &H40000

//判断窗口是否为任务应用函数,参数为窗口句柄
Public Function IsTaskbarApp(ByVal hwnd As Long) As Boolean
  Dim ExtendStyle As Long
  Dim hParent As Long
  Dim BoolIsTaskBarApp As Boolean
  ExtendStyle = GetWindowLongPtr(hwnd, GWL_EXSTYLE)
  hParent = GetParent(hwnd)
  BoolIsTaskBarApp = CBool((IsWindowVisible(hwnd) <> 0) And _
                    (GetWindow(hwnd, GW_OWNER) = 0) And _
                    (hParent = 0 Or hParent = GetDesktopWindow())) 
  If (ExtendStyle And WS_EX_TOOLWINDOW) Then BoolIsTaskBarApp = False 
  If (ExtendStyle And WS_EX_APPWINDOW) Then BoolIsTaskBarApp = True
  IsTaskbarApp = BoolIsTaskBarApp
End Function


 *-------------------------------------------*
 *     转载请注明出处
 *     作者:唐细刚
 *     邮箱:
tanaya@163.com
 *-------------------------------------------*

windows 获取进程列表的几种方式

这是从被人博客中摘抄的 http://www.cctry.com/forum.php?mod=viewthread&tid=11857
  • u012781540
  • u012781540
  • 2015年03月26日 14:02
  • 627

获取已安装应用列表

/** * @return 用户安装的应用 */ private List getApps() { List apps = new ArrayList();...
  • ithouse
  • ithouse
  • 2016年11月28日 14:07
  • 809

WMI 获得已安装应用程序列表   Win32_Product WMI 类代表通过 Windows Installer 安装的所有应用程序。

WMI 获得已安装应用程序列表   Win32_Product WMI 类代表通过 Windows Installer 安装的所有应用程序。但是,这个 WMI 类可能不会列出所有出现在‘添加/删...
  • thanklife
  • thanklife
  • 2017年06月29日 10:07
  • 612

ios获取已安装的应用列表

ios获取已安装的应用列表
  • longwenjunjie
  • longwenjunjie
  • 2015年03月25日 18:09
  • 1498

Android-获取应用程序列表

转自:http://www.cnblogs.com/hanyonglu/archive/2012/03/18/2404431.html Android系统为我们提供了很多服务管理的类,包括Act...
  • shashashashi
  • shashashashi
  • 2016年05月06日 16:41
  • 290

获取IOS应用安装列表

1.openURL 我们知道可以给应用设置URL Scheme,这样别的应用就可以通过这个地址打开咱们的应用。其实还有一个api叫canOpenURL.这样如果咱们知道要检查的IOS应用列表的URL ...
  • swj6125
  • swj6125
  • 2013年08月05日 14:41
  • 6255

一起学android之如何获取手机程序列表以及程序相关信息并启动指定程序 (26)

效果图: 程序列表: 启动程序,获取程序信息: 代码如下: 创建一个AppInfo类来表示应用程序 public class AppInfo { public Char...
  • GULINHAI12
  • GULINHAI12
  • 2015年03月15日 09:41
  • 2108

WinPcap笔记(2):获取设备列表

通常,编写基于WinPcap应用程序的第一件事情,就是获得已连接的网络适配器列表。WinPcap提供了pcap_findalldevs_ex()函数来实现这个功能:返回一个pcap_if结构的链表,这...
  • u012877472
  • u012877472
  • 2015年11月13日 15:11
  • 1044

获取手机所有应用程序的信息

在对手机软件进行管理的时候,我们常常需要知道手机软件的一些基本信息,如应用程序的类型、位置、uid等等,才好作出相应的操作。 以下是获取手机所有安装软件的关键代码: /** * 应用程序信息的实...
  • cy524563
  • cy524563
  • 2014年12月02日 16:54
  • 1694

Windows应用程序运行机制(笔记)

Windows应用程序:以windows作为平台运行的应用程序。 API函数 API函数:windows提供了大量可以在应用程序中调用的,用C语言编写的函数。 Windows A...
  • u010642004
  • u010642004
  • 2015年03月31日 21:22
  • 834
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何获取Windows应用程序列表
举报原因:
原因补充:

(最多只允许输入30个字)