惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
Martin Fowler
Martin Fowler
N
Netflix TechBlog - Medium
WordPress大学
WordPress大学
罗磊的独立博客
H
Help Net Security
MongoDB | Blog
MongoDB | Blog
A
About on SuperTechFans
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
D
Docker
云风的 BLOG
云风的 BLOG
Microsoft Security Blog
Microsoft Security Blog
Blog — PlanetScale
Blog — PlanetScale
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
I
InfoQ
J
Java Code Geeks
博客园 - 聂微东
大猫的无限游戏
大猫的无限游戏
Engineering at Meta
Engineering at Meta
美团技术团队
小众软件
小众软件
Stack Overflow Blog
Stack Overflow Blog
C
Check Point Blog

博客园 - 秋衫客

多久没来过这里了 发现上一篇日志是在两年前 终于要离开了,感觉有点那个吧 Visual C#.Net 网络程序开发-Socket篇 用C#下的Raw Socket编程实现网络封包监视 debian安装详细过程 MUTT文档中的Configuration variables 据说只有山东人才能看懂的笑话 转的一篇有用的装LAMP的文章 回应bobicqx朋友的留言 转:近视手术的黑幕!!!"医生"的良心何在???...... 为公司一个项目写的一个数据库操作类,使用了SQL Relay 今天刚知道的Javascript中parseInt函数的另一个参数 SQL Relay的PHP API使用方法 PHP的数据库连接池的实现 寒冷是有味道的 我侄女生病了,着急,担心 QQ的HTTP接口探究 无意中发现的一个很不错的QQWry.dat文件格式的原理
刚刚写了个小程序,显示系统中正在运行的进程及进程中模块的
秋衫客 · 2005-12-23 · via 博客园 - 秋衫客

这个程序没什么特殊的,就是用了Toolhelp库里的函数,主要是用CreateToolhelp32Snapshot建立句柄
然后分Process32First和Process32Next列举进程,然后在有参数的情况下用Module32First和Module32Next
列举对应进程所加载的模块,使用方法,直接运行pl列举进程,在查看到进程的对应pID时运行pl pID
此时则列举pID进程加载的模块,另,本程序没有加列举线程及终止进程、线程卸载模块的功能,等
有时间的时候再加上吧,应该会用到TerminateProcess/TerminateThread此类的函数,应该还会涉及到提
权的问题,有兴趣的朋友可以交流下呀。

#include <windows.h>
#include 
<tlhelp32.h>
#include 
<stdio.h>
#include 
<stdlib.h>int main(int argc, char *argv[]) {
    
if(argc==1) {
        HANDLE handle 
= (HANDLE)CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
        PROCESSENTRY32 Info;
        Info.dwSize 
= sizeof(PROCESSENTRY32);
        
if(Process32First(handle, &Info)) {
            printf(
"Process List:\n\n");
            printf(
"%-6s\t%s""PID""Process Name");
            
do {
                printf(
"\n%-6d\t%-10s", (int)Info.th32ProcessID, Info.szExeFile);
            }
while (Process32Next(handle, &Info));
        }
        CloseHandle(handle);
        
return 0;
    }
else {
        HANDLE handle 
= (HANDLE)CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, atoi(argv[1]));

        MODULEENTRY32 lInfo;
        lInfo.dwSize 

= sizeof(MODULEENTRY32);if(Module32First(handle, &lInfo)) {
            printf(
"Module List of %s:\n\n", lInfo.szModule);
            printf(
"%-16s\t%s""Module Name""Module Path");
            
do{
                printf(
"\n%-16s\t%s", lInfo.szModule, lInfo.szExePath);
            }
while(Module32Next(handle, &lInfo));
        }
        CloseHandle(handle);
        
return 0;
    }
}

已编译版本下载地址:https://files.cnblogs.com/tobylee/pl.rar