일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 컴퓨터 구조
- 렌더링
- shader programming
- denoising
- OpenGL
- 운영체제
- modeling
- win32
- 윈도우 구조
- 윈도우
- 그래픽스
- MFC
- 핵심 API로 배우는 윈도우프로그래밍
- shader
- Mesh Processing
- 오픈지엘
- Win32 API
- window programming
- 셰이더
- 컴퓨터 아키텍쳐
- bezier curve
- 그래픽스기초
- 윈도우프로그래밍
- c4d
- 베지에 곡선
- 윈도우 프로그래밍
- 셰이더프로그래밍
- MFC 윈도우 프로그래밍
- Graphics
- Geometry Modeling
Archives
- Today
- Total
오다기리 박의 알고리즘 노트
프로세스 이름으로 프로세스 ID찾기 본문
프로세스 이름(예를 들면 calculator.exe)을 입력받아 그에 해당하는 프로세스를 종료(terminateProcess)시키려면 어떻게해야 할까?
terminateProcess() 함수의 인자로는 HANDLE형을 넘겨줘야한다. 따라서 프로세스 이름만 알고서는 그 프로세스를 종료시키기에는 힘들다.
다음코드는 프로세스 이름을 입력받아 프로세스 ID로 변환해주는 함수이다.
그 후에는 OpenProcess() 함수를 이용하여 프로세스 ID를 인자로 넘겨주어 그에 해당하는 프로세스 핸들을 얻어낼 수 있다. 결국에는 그 핸들값으로 terminateProcess() 함수를 호출하여 프로세스를 종료시킬 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | DWORD FindProcessID(LPCTSTR szProcessName) { DWORD dwPID = 0xFFFFFFFF; PROCESSENTRY32 pe; pe.dwSize = sizeof(PROCESSENTRY32); // Get the snapshot of the system HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0); if (hSnapShot == INVALID_HANDLE_VALUE) { _tprintf(_T("CreateToolhelp32Snapshot error! \n")); return 0; } // find process Process32First(hSnapShot, &pe); do { if (!_tcscmp(szProcessName, StrLower(pe.szExeFile))) { dwPID = pe.th32ProcessID; break; } } while (Process32Next(hSnapShot, &pe)); CloseHandle(hSnapShot); return dwPID; } //문자열의 내에 존재하는 모든 대문자를 소문자로 변경하고 변경된 문자열의 포인터를 반환 TCHAR *StrLower(TCHAR *pStr) { TCHAR *ret = pStr; while (*pStr) { if (_istupper(*pStr)) *pStr = _totlower(*pStr); pStr++; } return ret; } | cs |
'프로그래밍 잡지식' 카테고리의 다른 글
스마트 포인터 (0) | 2021.08.11 |
---|---|
그리스 문자 (0) | 2021.08.11 |
문자열을 모두 소문자로 변경하기 (0) | 2021.08.11 |
가변 인수 함수란? (va_start(), va_end(), va_arg (2) | 2021.08.11 |