监视进程函数(API扫描进程映射表)

int MyWatch(char * thread_name)
{
    PROCESSENTRY32 pe32;
    char * mychar;
    BOOL bstart=TRUE;
    HANDLE hProcessSnap;


    while(1)
    {
        pe32.dwSize=sizeof(pe32);
        hProcessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
        if(hProcessSnap==INVALID_HANDLE_VALUE)
        {
            printf("CreateToolhelp32Snapshot调用失败!\n");
            return -1;
        }
        //遍历进程快照。轮流显示每个进程的信息

    
        bstart = TRUE;
        BOOL bMore=::Process32First(hProcessSnap,&pe32);
        while(bMore)
        {
            USES_CONVERSION; //启用宏命令标记    
            mychar = W2A(pe32.szExeFile);
            if(0==strcmp(thread_name,mychar)) //比较你的进程名字是否相同,判断是否进程在启动
            {
                printf("你的程序在运行!");
                bstart = FALSE;
                break;
            }
//                     printf("进程名称:%s\n",W2A(pe32.szExeFile));
//                     printf("进程ID号:%u\n\n",pe32.th32ProcessID);        
            bMore=::Process32Next(hProcessSnap,&pe32);
        }

        if(bstart)
        {
            ShellExecute(0, _T("open"), _T("D:\\result.txt"),NULL,NULL,SW_SHOWNORMAL); //启动你要的exe文件,D:\\result.txt是我自己的测试
        }
        

        Sleep(5000);//5秒监测一次

    }
    //清除snapshot对象
    ::CloseHandle(hProcessSnap);

    return 0;
}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值