繁体   English   中英

访问windows 10任务管理器进程列表

[英]Accessing windows 10 task manager process list

当谈到 Windows 7 任务管理器时,我很容易获得进程计数等,因为进程存储在我可以使用 SendMessage 函数访问的传统列表视图控件中。 对于explorer/win10 task mgr/etc 然而,存储进程的列表控件似乎不是传统控件,而是自定义控件。 我想知道是否有任何关于 Microsoft 在其较新的系统应用程序中使用的自定义控件的文档,和/或我是否可以使用 SendMessage 或类似我以前使用过的东西访问它们?

 //Get the handle of the list..you can find the handle in win7&10 pretty easily
 FindWindowExA(...parent,IntPtr.Zero,"SysListView32","Processes");//=listview handle
 
 //Sending a message to get the number of processes for instance, works in windows 7 only
 SendMessageA(process list handle,(IntPtr)0x1004,IntPtr.Zero,null);//=process count

如果没有,是否值得尝试自我调试如何访问列表,或者这是一个坏主意? 为什么? 我有一个 c# 应用程序,使用 PInvoke 移植 C++ 方法没有问题。 谢谢

不要那样做。 任务管理器没有做任何魔术。 它使用 Windows API 获取进程列表,枚举它并获取详细信息。 你正在做的事情实际上比简单地复制任务管理器在内部所做的事情更难做对。 Process Status API (psapi)是一个很好的起点,还有其他 API 可以获取资源使用信息等。只需“漫步” WINAPI 文档(无可否认,这里和那里都是稀疏的) . 如果有疑问,请使用调试器来破坏任务管理器并查看 API 调用的内容,或者使用depends工具查看它使用的 API,以便您了解在哪里查看。 您还可以使用 IDA-Pro 等逆向工程工具进行部分反汇编并查找 API 调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM