《Windows程序设计》[第二版] - 第2章 Win32程序运行原理 - 关闭指定名称的进程
2010-04-03 19:31
393 查看
《Windows程序设计》[第二版] - 第2章 Win32程序运行原理 - 关闭指定名称的进程
#include <stdio.h> #include <windows.h> #include <TlHelp32.h> int TerminateProcessName(const char* szProcessName, UINT uExitCode, LPDWORD lpdwProcessID) { /* A. 根据进程名字获取进程ID */ DWORD dwProcessID = 0; PROCESSENTRY32 pe32; // 使用这个结构之前先设置它的大小 pe32.dwSize = sizeof(pe32); // 给系统内的所有进程拍一个快照 HANDLE hProcessSnapshot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnapshot == INVALID_HANDLE_VALUE) { //printf(" CreateToolhelp32Snapshot 调用失败!/n"); return -1; } // 遍历进程快照,轮流显示每个进程的信息 BOOL bMore = ::Process32First(hProcessSnapshot, &pe32); while (bMore) { //printf("/n 进程名称:%s /n", pe32.szExeFile); //printf(" 进程ID号:%u /n", pe32.th32ProcessID); if (strcmp(pe32.szExeFile, szProcessName) == 0) { dwProcessID = pe32.th32ProcessID; } bMore = ::Process32Next(hProcessSnapshot, &pe32); } ::CloseHandle(hProcessSnapshot); if (dwProcessID == 0) { //printf(" 没有找到进程名为%s的进程/n", szProcessName); return -2; } if (lpdwProcessID != NULL) { *lpdwProcessID = dwProcessID; } /* B. 根据进程ID获取进程句柄 */ HANDLE hProcess = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessID); if (hProcess == INVALID_HANDLE_VALUE) { //printf(" 获取进程ID号为%d的进程句柄失败 /n", dwProcessID); return -3; } /* C. 根据进程句柄关闭进程 */ BOOL bRet = ::TerminateProcess(hProcess, uExitCode); ::CloseHandle(hProcess); if (bRet) { return 0; }else{ return -4; } } int main(int argc, char* argv[]) { char szProcessName[] = "QQ.exe"; DWORD dwProcessID; int iRet = TerminateProcessName(szProcessName, 99, &dwProcessID); if (iRet != 0) { printf("失败,失败原因:%d /n", ::GetLastError()); }else{ printf("成功/n"); } return 0; }
相关文章推荐
- 《Windows程序设计》[第二版] - 第2章 Win32程序运行原理 - 遍历系统进程和模块
- 《Windows程序设计》[第二版] - 第2章 Win32程序运行原理 - 其他进程内存修改器
- 《Windows程序设计》[第二版] - 第2章 Win32程序运行原理 - 创建进程
- [linux基础] 通过进程id获取运行程序的程序名称
- linux查看指定程序是否运行及关闭
- 根据进程名称判断程序是否运行
- 以&运行在后台的程序,关闭terminal后,相应进进程自动关闭
- Win7 64位下让VC++6.0编写的Win32程序单进程运行内存突破2G
- win32程序运行原理1
- ubuntu显示端口占用、正在运行的程序,以及强制关闭一个进程
- 三十九、Android原理 不需要关闭后台运行程序
- Android原理 不需要关闭后台运行程序
- C# 关闭登录窗体,进入主窗体后,主窗体关闭,程序进程仍在运行的问题
- Windows程序设计(1)——Win32运行原理(三)
- 以&运行在后台的程序,关闭terminal后,相应进进程自动关闭
- C# 关闭登录窗体,进入主窗体后,主窗体关闭,程序进程仍在运行的问题
- Android原理 不需要关闭后台运行程序
- Windows程序设计(1)——Win32运行原理(二)
- win32程序运行原理
- Inno Setup 在安装程序开始前和卸载程序开始前,检查并关闭运行的进程