如何获取Windows应用程序列表
来源:互联网 发布:数据解决方案 编辑:程序博客网 时间:2024/05/01 03:19
来自:唐细刚的专栏
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应用程序列表
- 如何获取Windows应用程序列表
- Android中如何获取系统应用程序列表
- Android---获取应用程序列表
- Android-获取应用程序列表
- Windows mobile 判断应用程序是否安装,获取已经安装的应用程序列表
- ios获取安装应用程序列表
- 获取windows 用户列表
- 如何获取联系人列表
- Android中如何获取系统应用程序列表与AndroidManifest.xml信息
- Android中如何获取系统应用程序列表与AndroidManifest.xml信息
- 使用ADSI获取IIS应用程序池列表
- android 获取正在运行的应用程序列表
- android 获取正在运行的应用程序列表 .
- ios开发之获取应用程序列表
- macOS+Windows+iOS: 应用程序兼容性列表
- 如何获取应用程序的路径
- 如何获取应用程序当前路径
- Linux内核网络部分数据包流程
- Blog运用感想
- 一个将阿拉伯数字转换成中文大写的算法[C#]
- 更深入一点理解switch语句及c/c++对const的处理
- 一张韩国人写的让所有中国人汗颜的帖子
- 如何获取Windows应用程序列表
- danny
- 程序员,你的路好走吗?(一)
- 最全的HTML特殊字符列表
- JDBC连接RAC的配置-one example
- 心目中的编程高手
- 博弈论大师---纳什
- QQwry格式
- 为你的Blog打造个性日历控件