4,552,359 th visitor since 2017.2.1 ( Today : 132 )
Programming
No. 686
Name. swindler
Subject. 프로세스명으로 프로세스 종료(함수)
Main Cate. Win32
Sub Cate. C/C++
Date. 2010-09-27 18:09
Hit. 5851 (211.36.27.8)
File.
psapi.h는 visual studio 2003에서는 그냥 컴파일이 되며 6.0에서는 SDK를 설치해야만 한다.
projectsetting -> link -> Object/library modles에 Psapi.lib를 추가해주어야한다.
afx.h를 psapi.h보다 먼저 선언해주어야하며, 이후 컴파일이 순조롭게 진행된다면 문제가 없지만 다음과 같은 에러가 날수가 있다.
uafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
uafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
위의 두가지 에러가 발생하였다면
Project > setting > General > Microsoft Foundation Classes: 에서 Use MFC in a Static Libary
선택하면 문제없이 컴파일 될것이다.


#include <afx.h>
#include <psapi.h>

void ExixProcessName(CString strProcessName);

int main(int argc, char** argv)
{
ExixProcessName("test.exe");
return 0;
}

void ExixProcessName(CString strProcessName)
{
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;

if( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ))
return;

cProcesses = cbNeeded / sizeof(DWORD);

for ( i = 0; i < cProcesses; i++ )
{
char szProcessName[MAX_PATH] = "unknown";

HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
FALSE, aProcesses[i] );

if (NULL != hProcess )
{
HMODULE hMod;
DWORD cbNeeded;

if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) )
{
GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName) );
}
}

bool bRet;
if(strcmp(szProcessName,(LPSTR)(LPCTSTR)strProcessName)==0)
{
HANDLE hProcess = NULL;

hProcess = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, aProcesses[i]);
if(hProcess != NULL)
{
DWORD ExitCode = 0;
GetExitCodeProcess( hProcess, &ExitCode );
bRet = ::TerminateProcess(hProcess, ExitCode );
if( bRet )
{
::WaitForSingleObject(hProcess, INFINITE);
}

::CloseHandle(hProcess);
}
}
CloseHandle( hProcess );
}
}


[바로가기 링크] : http://coolx.net/cboard/develop/686



swindler ChildProcess 까지 죽이는거 같은데, 아직 테스트를 해 보지는 못했음 2010-09-27
Name
Password
Comment
Copyright © 1999-2017, swindler. All rights reserved. 367,611 visitor ( 1999.1.8-2004.5.26 ), 2,405,771 ( -2017.01.31)

  2HLAB   2HLAB_Blog   RedToolBox   Omil   Omil_Blog