|
#include <tlhelp32.h>
하시면 될듯... 그리고 이소스도 참고해 보세요... excel.exe 를 쥑여(^^;)줍니다.
죽이고자 하는 프로세서로 대체하시면 됩니다..
void __fastcall TForm1::KillExcel()
{
// TODO: Add your control notification handler code here
HINSTANCE modKERNEL = GetModuleHandle(("KERNEL32.DLL"));
CREATESNAPSHOT pCreateToolhelp32Snapshot;
PROCESSWALK pProcess32First;
PROCESSWALK pProcess32Next;
// 동적 함수 할당
pCreateToolhelp32Snapshot = (CREATESNAPSHOT)GetProcAddress(modKERNEL, "CreateToolhelp32Snapshot");
pProcess32First = (PROCESSWALK)GetProcAddress(modKERNEL, "Process32First");
pProcess32Next = (PROCESSWALK)GetProcAddress(modKERNEL, "Process32Next");
if ( NULL == pCreateToolhelp32Snapshot ||
NULL == pProcess32First ||
NULL == pProcess32Next )
return;
PROCESSENTRY32 proc;
proc.dwSize = sizeof(proc);
HANDLE snapshot = pCreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
/* Now that we have a snapshot of the system state, we simply
* walk the list it represents by calling Process32First once,
* then call Proces32Next repeatedly until we get to the end
* of the list.
*/
pProcess32First(snapshot, &proc);
if( !stricmp(proc.szExeFile, "excel.exe"))
{
HANDLE ExcelProcess = OpenProcess(PROCESS_ALL_ACCESS, False, proc.th32ProcessID);
TerminateProcess(ExcelProcess ,0);
CloseHandle(ExcelProcess);
CloseHandle(snapshot);
return;
}
while ( pProcess32Next(snapshot, &proc) )
{
if( !stricmp(proc.szExeFile, "excel.exe"))
{
HANDLE ExcelProcess = OpenProcess(PROCESS_ALL_ACCESS, False, proc.th32ProcessID);
TerminateProcess(ExcelProcess ,0);
CloseHandle(ExcelProcess);
break;
}
}
CloseHandle(snapshot);
}
//---------------------------------------------------------------------------
|