15,471
社区成员
发帖
与我相关
我的任务
分享
HANDLE FindProcess(char desProcess[])
{
HANDLE hProcessSnap;
HANDLE hProcess;
PROCESSENTRY32 pe32;
hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
if( hProcessSnap == INVALID_HANDLE_VALUE )
{
printf( "CreateToolhelp32Snapshot (of processes)" );
return( FALSE );
}
pe32.dwSize = sizeof( PROCESSENTRY32 );
if( !Process32First( hProcessSnap, &pe32 ) )
{
printf( "Process32First" ); // Show cause of failure
CloseHandle( hProcessSnap ); // Must clean up the snapshot object!
return( FALSE );
}
do
{
printf( "\nPROCESS NAME: %s\n", pe32.szExeFile );
if (strcmp(desProcess, pe32.szExeFile) == 0)
{
CloseHandle( hProcessSnap );
hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID );
if( hProcess == NULL )
{
printf( "OpenProcess Error!\n" );
return NULL;
}
return hProcess;
}
} while( Process32Next( hProcessSnap, &pe32 ) );
CloseHandle( hProcessSnap );
return NULL;
}
#include <windows.h>
#include <stdio.h>
void main( VOID )
{
STARTUPINFOA si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
while(true)
{
if( !CreateProcessA( NULL,
"notepad.exe", // 要启动的进程名。可以把绝对路径写上。如:"D:\\MyDir\\MyProgram.exe"
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi )
)
{
printf( "CreateProcess failed (%d).\n", GetLastError() );
return;
}
Sleep(2000); // 睡眠2秒,看到记事本打开
BOOL isSuccess;
do
{
isSuccess = TerminateProcess(pi.hProcess, 0); //杀掉进程
if (!isSuccess)
{// 失败
printf( "TerminateProcess failed (%d).\n", GetLastError() );
}
}while(!isSuccess); // 杀掉失败,则继续杀。
CloseHandle(pi.hThread); // 关闭句柄
CloseHandle(pi.hProcess);// 关闭句柄
Sleep(2000); // 睡眠2秒,看到记事本已关闭
}
}