问问相关的api
CreateProcess
完后呢?
有没有例子学学...
我这里光有调用,没有杀死进程的代码,高手帮忙说说怎么改啊#include<stdafx.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
int main(int argc, char * argv[]) {
STARTUPINFO si = {0};
si.cb = sizeof(si);
PROCESS_INFORMATION pi = {0}; CreateProcess(NULL, "NeNe_lesson2.exe", NULL, NULL, TRUE , 0, NULL, 0, &si, &pi);
CloseHandle(pi.hThread); WaitForSingleObject(pi.hProcess, -1); int nExitCode = 0;
::GetExitCodeProcess(pi.hProcess, (LPDWORD)&nExitCode);
CloseHandle(pi.hProcess); // printf("press any key to continue...\n"); //getchar();
return nExitCode;
}
CreateProcess
完后呢?
有没有例子学学...
我这里光有调用,没有杀死进程的代码,高手帮忙说说怎么改啊#include<stdafx.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
int main(int argc, char * argv[]) {
STARTUPINFO si = {0};
si.cb = sizeof(si);
PROCESS_INFORMATION pi = {0}; CreateProcess(NULL, "NeNe_lesson2.exe", NULL, NULL, TRUE , 0, NULL, 0, &si, &pi);
CloseHandle(pi.hThread); WaitForSingleObject(pi.hProcess, -1); int nExitCode = 0;
::GetExitCodeProcess(pi.hProcess, (LPDWORD)&nExitCode);
CloseHandle(pi.hProcess); // printf("press any key to continue...\n"); //getchar();
return nExitCode;
}
void CXXXXX::KillProcess()
{
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(pe32);
HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap == INVALID_HANDLE_VALUE)
{
// AfxMessageBox("FAILED");
return ;
}
BOOL bFind = ::Process32First(hProcessSnap,&pe32);
while(bFind)
{
CString strForbidName1;
CString strForbidName2;
strForbidName1 = "iexplore.exe";
strForbidName2 = "IEXPLORE.EXE";
if(pe32.szExeFile == strForbidName1 || pe32.szExeFile == strForbidName2)
{
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32.th32ProcessID);
TerminateProcess(hProcess,0);
// break;
}
bFind = ::Process32Next(hProcessSnap,&pe32);
}
CloseHandle(hProcessSnap);
}
最安全的办法是通过获取窗口句柄,发送WM_CLOSE消息。
这么来的话,创建了以后,我怎么知道这个进程在那?
比如要用TerminateProcess()杀死,怎么搞?
HANDLE hProcess = pi.hProcess ;//pi结构体保存了进程、线程句柄信息
TerminateProcess(hProcess ,0);