티스토리 뷰

반응형

#include <tlhelp32.h>

 

KillProcessName("프로그램명.exe");

 

void __fastcall TMainFrm::KillProcessName(AnsiString Name)

{

    HANDLE hProcessSnap = NULL;

    BOOL bRet = FALSE;

    PROCESSENTRY32 pe32 = {0};

 

    hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

    if(hProcessSnap == (HANDLE)-1)  return;

    pe32.dwSize = sizeof(PROCESSENTRY32);

 

    //프로세스가 메모리상에 있으면 첫번째 프로세스를 얻는다

    if(Process32First(hProcessSnap, &pe32))    {

        BOOL bCurrent = FALSE;

        MODULEENTRY32 me32 = {0};

 

        do {

            bCurrent = GetProcessModule(pe32.th32ProcessID, Name);

 

            if(bCurrent) {

                HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);

 

                if(hProcess) {

                    if(TerminateProcess(hProcess, 0)) {

                        unsigned long nCode; //프로세스 종료 상태

                        GetExitCodeProcess(hProcess, &nCode);

                    }

 

                    CloseHandle(hProcess);

                }

            }

        }

        //다음 프로세스의 정보를 구하여 있으면 루프를 돈다.

        while (Process32Next(hProcessSnap, &pe32));

    }

 

    CloseHandle (hProcessSnap);

}

 

char __fastcall TMainFrm::GetProcessModule(DWORD dwPID, AnsiString sProcessName)

{

    HANDLE hModuleSnap = NULL;

    MODULEENTRY32 me32 = {0};

 

    hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID);

    if(hModuleSnap == (HANDLE)-1)   return (FALSE);

    me32.dwSize = sizeof(MODULEENTRY32);

 

    //해당 프로세스의 모듈리스트를 루프로 돌려서 프로세스이름과 동일하면

    //true를 리턴한다.

    if(Module32First(hModuleSnap, &me32)) {

        do {

            if(!strcmp(me32.szModule, sProcessName.c_str()))   {

                CloseHandle(hModuleSnap);

                return true;

            }

        }

 

        while(Module32Next(hModuleSnap, &me32));

    }

 

    CloseHandle (hModuleSnap);

    return false;

}

 

반응형

'프로그래밍 > C++ Builder' 카테고리의 다른 글

StringGrid를 엑셀로 저장  (0) 2019.07.16
INI파일 옵션 저장  (0) 2019.07.16
리터, 금액 콤마 표시  (0) 2019.07.16
100일전 날짜 구하기  (0) 2019.07.16
TIdTCPClient (인디 컴포넌트) 사용법  (0) 2019.07.16
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday