已知:
进程A启动进程B,进程B启动进程C,
问:如何在进程A中结束进程C?如何拿到进程C的句柄?
我用terminateThread函数,但进程C的句柄我无法拿到,牛人指点一个行之有效的途径,非常感谢再问:如果取得一个进程的ID,能否得到它的句柄及该进程的相关信息?
进程A启动进程B,进程B启动进程C,
问:如何在进程A中结束进程C?如何拿到进程C的句柄?
我用terminateThread函数,但进程C的句柄我无法拿到,牛人指点一个行之有效的途径,非常感谢再问:如果取得一个进程的ID,能否得到它的句柄及该进程的相关信息?
解决方案 »
- SetDoubleClickTime()
- 如何计算中英文混合的CString中的单字数量?(在线等待)
- visual studio 6.0无法安装,重装系统也不行,怎么解决?
- CString字符串匹配?
- 设置密码框的*号?
- 请教:如何将一窗口动态影像(连续)转换为象雷达扫描线一样的图像。酬谢(请看详细描述)?
- 如何在单文档中把对话框最为背景?(在线等)
- ★★★★★高手请进→→→高分求答●●●●●
- 有关编写类LOGO语言
- 菜鸟问题:什么时候要用函数LPtoDP()进行坐标转换?
- 请专家解决DCOM配置问题.酬谢或聘请!!
- 玩过Gina DLL的大虾们过来看看!-> 小弟想在系统登陆时连接服务器上的SQLSEVER数据库来做身份验证
::SendMessage(hWnd,WM_CLOSE,0,0);
{
DWORD dwRet = 0;
char buffer[300],*strExePath,*strProcessName; HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hSnapshot != INVALID_HANDLE_VALUE)
{
PROCESSENTRY32 ProcessEntry;
ZeroMemory(&ProcessEntry,sizeof(PROCESSENTRY32));
ProcessEntry.dwSize = sizeof(PROCESSENTRY32);
BOOL bFlag = Process32First(hSnapshot,&ProcessEntry);
while(bFlag)
{
strcpy(buffer,ProcessEntry.szExeFile);
strExePath=_strupr(_strdup(buffer));
strProcessName=_strupr(_strdup(lpszProcessName));
if(strstr(strExePath,strProcessName) != NULL)
{
dwRet = ProcessEntry.th32ProcessID;
break;
}
ProcessEntry.dwSize = sizeof(PROCESSENTRY32);
bFlag = Process32Next(hSnapshot,&ProcessEntry);
}
CloseHandle(hSnapshot);
}
return dwRet;
}
而进程间通信的方法很多,管道、邮槽。。
参考《Windows核心编程》
然后,
HANDLE hp = OpenProcess(PROCESS_ALL_ACCESS,FALSE,id);
TerminateProcess(hp,0);