根据进程名或窗口标题杀进程及创建进程的函数

本文提供了在Windows环境下终止指定进程名称或窗口标题的进程的方法,并展示了如何创建新的进程。通过使用如CreateToolhelp32Snapshot、TerminateProcess及CreateProcess等API函数实现进程管理。

//需要头文件

#include<Tlhelp32.h>

int KillProcess(LPCSTR pszProcessName)
{
    int res = 0;
   
    HANDLE handle; //¶¨ÒåCreateToolhelp32Snapshotϵͳ¿ìÕÕ¾ä±ú
   
    HANDLE handle1; //¶¨ÒåÒª½áÊø½ø³Ì¾ä±ú
   
    handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//»ñµÃϵͳ¿ìÕÕ¾ä±ú
   
    PROCESSENTRY32 *info; //¶¨ÒåPROCESSENTRY32½á¹¹×ÖÖ¸
   
    //PROCESSENTRY32  ½á¹¹µÄ dwSize ³ÉÔ±ÉèÖÃ³É sizeof(PROCESSENTRY32)
   
    info=new PROCESSENTRY32;            
   
    info->dwSize=sizeof(PROCESSENTRY32);
   
    //µ÷ÓÃÒ»´Î Process32First º¯Êý£¬´Ó¿ìÕÕÖлñÈ¡½ø³ÌÁбí
   
    Process32First(handle,info);
   
    //ÖØ¸´µ÷Óà Process32Next£¬Ö±µ½º¯Êý·µ»Ø FALSE Ϊֹ
   
    do
    {
        info->szExeFile;     //Ö¸Ïò½ø³ÌÃû×Ö
       
        //strcmp×Ö·û´®±È½Ïº¯ÊýͬҪ½áÊøÏàͬ
       
        if( strcmp(pszProcessName,info->szExeFile) == 0 )
        {
            //PROCESS_TERMINATE±íʾΪ½áÊø²Ù×÷´ò¿ª,FALSE=¿É¼Ì³Ð,info->th32ProcessID=½ø³ÌID
           
            handle1=OpenProcess(PROCESS_TERMINATE,FALSE,info->th32ProcessID);
           
            //½áÊø½ø³Ì
           
            res = TerminateProcess(handle1,0);
           
        }
       
       
    }while(Process32Next(handle,info)!=FALSE);
    CloseHandle(handle);
    return res;
}
int KillProcess2(LPCSTR pszWindowTitle)
{
    HANDLE hProcessHandle; 
    ULONG nProcessID;
    HWND TheWindow;

    TheWindow = ::FindWindow( NULL, pszWindowTitle );
    ::GetWindowThreadProcessId(TheWindow, &nProcessID );
    hProcessHandle = ::OpenProcess( PROCESS_TERMINATE, FALSE, nProcessID );
    return ::TerminateProcess( hProcessHandle, 4 );
  
}
int CreateNewProcess(LPCSTR pszExeName)
{
    PROCESS_INFORMATION piProcInfoGPS;
    STARTUPINFO siStartupInfo;
    SECURITY_ATTRIBUTES saProcess, saThread;
    ZeroMemory( &siStartupInfo, sizeof(siStartupInfo) );
    siStartupInfo.cb = sizeof(siStartupInfo);
    saProcess.nLength = sizeof(saProcess);
    saProcess.lpSecurityDescriptor = NULL;
    saProcess.bInheritHandle = true;
    saThread.nLength = sizeof(saThread);
    saThread.lpSecurityDescriptor = NULL;
    saThread.bInheritHandle = true;
    return ::CreateProcess( NULL
        , (LPTSTR)pszExeName
        , &saProcess
        , &saThread, false,
       CREATE_DEFAULT_ERROR_MODE
       , NULL, NULL
       , &siStartupInfo
       , &piProcInfoGPS
       );

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值