如何从Windows任务管理器(应用程序选项卡)获取应用程序在Delphi
发布时间:2020-12-14 04:27:48 所属栏目:Windows 来源:网络整理
导读:我想获得在 Windows任务管理器的应用程序选项卡(不是进程选项卡)中运行和可见的程序列表,并获取它们在HDD上的位置? ?我需要在Delphi中完成它.有人可以帮忙吗? 解决方法 据我所知,任务管理器中的“应用程序”选项卡是顶级窗口的列表,这些窗口不属于其他窗口
我想获得在
Windows任务管理器的应用程序选项卡(不是进程选项卡)中运行和可见的程序列表,并获取它们在HDD上的位置?
?我需要在Delphi中完成它.有人可以帮忙吗? 解决方法
据我所知,任务管理器中的“应用程序”选项卡是顶级窗口的列表,这些窗口不属于其他窗口,没有父窗口,也不是工具窗口.在我的
Process Info中,我有一个名为AppInfo.pas的单元,它返回一个具有这些特征的窗口列表,该列表与您在任务管理器中看到的相匹配.以下是代码的主要部分,它是作为EnumWindows API函数的回调函数编写的:
{$IFDEF DELPHI2007UP} class function TAppWindowCollection.EnumWinProc(wHandle: HWND; lparam: integer): Bool; {$ELSE} function EnumWinProc(wHandle: HWND; lparam: integer): Bool; stdcall; {$ENDIF} Const MAX_TEXT = MAX_PATH; var WindowItem : TWindowItem; strText,strClass : array [0..MAX_TEXT] of char; IsAppMainWin : Boolean; begin //Check if the window is a visible application main window. IsAppMainWin := IsWindowVisible(wHandle) AND //Visible (GetWindow(wHandle,GW_OWNER) = 0) AND //Not owned by other windows (GetParent(wHandle) = 0) AND //Does not have any parent (GetWindowLong(wHandle,GWL_EXSTYLE) AND WS_EX_TOOLWINDOW = 0); //Not a tool window if IsAppMainWin then begin WindowItem := TAppWindowCollection(lparam).Add; GetWindowText(wHandle,strText,MAX_TEXT); GetClassName(wHandle,strClass,MAX_TEXT); WindowItem.FCaption := strText; WindowItem.FHandle := wHandle; WindowItem.FWindowClass := strClass; GetWindowThreadProcessId(wHandle,WindowItem.FProcessID); end; Result := True; end; 有关完整源代码,请参阅AppInfo.pas.
这些只是窗户.如果要获取与每个项目对应的EXE文件的路径,则应首先使用GetWindowThreadProcessID API函数找到拥有此窗口的进程.这就是我在上面的代码中所做的.获得进程ID后,您可以从中获取进程句柄,并枚举其模块.第一个模块是主EXE文件.我在我的TProcessInfo组件中实现了它,它与AppInfo.pas包含在同一个包中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Windows 7 QueryPerformanceFrequency返回2.4 MHz-ish?
- windows – 网站和Active Directory域共享相同的名称
- windows-server-2008 – 每个用户的网络监控
- 如何设置subgit镜像一个看起来像Windows资源管理器层次结构
- windows – PHP 7.0.5:使用未定义的常量FTP_BINARY – 假设
- windows – 保持线程保持最佳状态?
- windows下memcache扩展安装和搭建
- dll – php 7无法初始化sqlsrv
- Windows 10 Bash(Ubuntu 14.04) – 如何向上滚动?
- 如何在相同的Windows XP框上运行python 2.6和3.0?
推荐文章
站长推荐
- Windows – 如何在IIS上检测移动设备,以便将其重
- windows – 创建一个目录并通过发出一个IRP来获取
- windows-phone-7 – 关于windows phone的信息(型
- windows – “根据证书类型自动选择证书存储”的
- 在Windows Server上安装RequestTracker(RT)?
- 如何确定使用(最好)仅批次安装Windows服务?
- Windows – 我的32位应用程序可以做什么消耗千兆
- Win32:如何使用CreateWindowExW()函数创建ListB
- NetCore2.2开发环境搭建和2008R2部署环境搭建
- 想说再见不容易,win7最新市占率依然超36%
热点阅读