C语言写的屏蔽进程运行的程序

这个是帮别人写的。具体用途不详。
// 通过PSAPI函数枚举进程
#include "stdio.h"
#include "string.h"
#include "windows.h"
// 定义函数指针
typedef BOOL (__stdcall* funEnumPorcess)(DWORD *lpidProcess,      // 进程ID
                                         DWORD cb,                // lpidProcess的大小
                                         DWORD *cbNeeded);        // 实际使用lpidProcess的字节数

typedef DWORD (__stdcall* funGetModuleFileNameEx)(HANDLE hProcess,    // 待获得进程名称的进程句柄
                                                  HMODULE hModule,    // 当前调用进程的句柄
                                                  LPTSTR lpFileName,  // 记录返回的进程名称
                                                  DWORD nSize);       // lpFileName大小

const DWORD MAXPROCESS = 500;   // 假设当前系统最大有500个进程正在执行
int main (){
    while(1){
       killer();  
             };
    } ;
int killer()
{
    char FileName[] = "notepad.exe";     // 大小写任意
    char NameBuff[MAX_PATH];
    char *pFileName;        // pFileName转化为大写后的字符串指针
    char *pNameBuff;        // NameBuff转化为大写后的字符串指针
   
    BOOL bRes;              // 返回结果
    HINSTANCE hInstance;    // 动态库句柄
    HANDLE hHandle;         // 进程句柄
   
    int i, j;      // 循环变量
   
    int len;
   
    funEnumPorcess EnumProcesses;
    funGetModuleFileNameEx GetModuleFileNameEx;
   
    DWORD *buffer, maxNum, factNum;
   
    maxNum = MAXPROCESS;
    factNum = MAXPROCESS;
    buffer = (DWORD *)malloc(maxNum);
   
    hInstance = LoadLibrary("psapi.dll");   // 装载psapi.dll
    if (hInstance)
    {
        EnumProcesses = (funEnumPorcess)GetProcAddress(hInstance, "EnumProcesses");
        if (EnumProcesses)
        {
            bRes = EnumProcesses(buffer, maxNum, &factNum); // 枚举进程,得到进程名称和实际进程总大小
            if (bRes)
            {
                factNum /= sizeof(DWORD);     // 计算实际进程个数
                GetModuleFileNameEx = (funGetModuleFileNameEx)GetProcAddress(hInstance, "GetModuleFileNameExA");
                if (GetModuleFileNameEx)
                {
                    for (i=0; i<factNum; i++)
                    {
                        hHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, buffer[i]);   // 获取进程句柄
                        if (hHandle)
                        {
                            bRes = GetModuleFileNameEx(hHandle, NULL, NameBuff, MAX_PATH);   // 获取进程名称
                            if (bRes)
                            {                               
                                pFileName = strupr(FileName);     // 字符串转化为大写
                                pNameBuff = strupr(NameBuff);
                                if (strstr(pNameBuff, pFileName) != NULL)      // 名字查找
                                {
                                    if (TerminateProcess(hHandle, 0));
                                    {
                                        printf("关闭 %s 成功\n", NameBuff);
                                        break;
                                    }
                                }
                            }
                            // 关闭句柄
                            CloseHandle(hHandle);
                        }
                    }
                }
            }
        }
        // 释放动态库
        FreeLibrary(hInstance);
    }
    free(buffer);
   
    return 0;
}

你可能感兴趣的:(C++,c,windows,C#,Access)