如何获取Windows应用程序列表

27 篇文章 0 订阅

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
'-------------------------------------------
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值