通过进程ID或名字结束进程
来源:互联网 发布:程序员技术分享 编辑:程序博客网 时间:2024/05/05 04:41
1.通过进程名:
void CloseProgram(CString strProgram){ HANDLE handle; //定义CreateToolhelp32Snapshot系统快照句柄 HANDLE handle1; //定义要结束进程句柄 handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//获得系统快照句柄 PROCESSENTRY32 *info; //定义PROCESSENTRY32结构字指 //PROCESSENTRY32 结构的 dwSize 成员设置成 sizeof(PROCESSENTRY32) info = new PROCESSENTRY32; info->dwSize = sizeof(PROCESSENTRY32); //调用一次 Process32First 函数,从快照中获取进程列表 Process32First(handle, info); //重复调用 Process32Next,直到函数返回 FALSE 为止 while(Process32Next(handle, info) != FALSE) { CString strTmp = info->szExeFile; //指向进程名字 //strcmp字符串比较函数同要结束相同 //if(strcmp(c, info->szExeFile) == 0 ) if (strProgram.CompareNoCase(info->szExeFile) == 0 ) { //PROCESS_TERMINATE表示为结束操作打开,FALSE=可继承,info->th32ProcessID=进程ID handle1 = OpenProcess(PROCESS_TERMINATE, FALSE, info->th32ProcessID); //结束进程 TerminateProcess(handle1, 0); } } delete info; CloseHandle(handle);}
2.2.通过进程ID
BOOL SetPrivilege(HANDLE hToken,LPCTSTR lpszPrivilege,BOOL bEnablePrivilege){ TOKEN_PRIVILEGES tp; LUID luid; if(!LookupPrivilegeValue(NULL,lpszPrivilege,&luid)) { printf("\nLookupPrivilegeValue error:%d", GetLastError() ); return FALSE; } tp.PrivilegeCount = 1; tp.Privileges[0].Luid = luid; if (bEnablePrivilege) tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; else tp.Privileges[0].Attributes = 0; // Enable the privilege or disable all privileges. AdjustTokenPrivileges( hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), (PTOKEN_PRIVILEGES) NULL, (PDWORD) NULL); // Call GetLastError to determine whether the function succeeded. if (GetLastError() != ERROR_SUCCESS) { printf("AdjustTokenPrivileges failed: %u\n", GetLastError() ); return FALSE; } return TRUE;}BOOL KillPS(DWORD id){ HANDLE hProcess=NULL,hProcessToken=NULL; BOOL IsKilled=FALSE,bRet=FALSE; if((hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,id))!=NULL) { if(TerminateProcess(hProcess,1)) { return TRUE; } } __try { if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ALL_ACCESS,&hProcessToken)) { printf("\nOpen Current Process Token failed:%d",GetLastError()); __leave; } //printf("\nOpen Current Process Token ok!"); if(!SetPrivilege(hProcessToken,SE_DEBUG_NAME,TRUE)) { __leave; } printf("\nSetPrivilege ok!"); if((hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,id))==NULL) { printf("\nOpen Process %d failed:%d",id,GetLastError()); __leave; } //printf("\nOpen Process %d ok!",id); if(!TerminateProcess(hProcess,1)) { printf("\nTerminateProcess failed:%d",GetLastError()); __leave; } IsKilled=TRUE; } __finally { if(hProcessToken!=NULL) CloseHandle(hProcessToken); if(hProcess!=NULL) CloseHandle(hProcess); } return(IsKilled);}
1 0
- 通过进程ID或名字结束进程
- 根据进程名字结束进程
- VC++ 通过进程名或进程ID获取进程句柄
- VC++ 通过进程名或进程ID获取进程句柄
- 如何根据进程名字结束进程
- 通过PspTerminateThreadByPointer结束进程
- 进程的id获得进程的名字
- linux根据进程名字获取进程ID
- 根据进程ID获取进程名字
- 由进程名字获取进程 ID
- 通过进程ID或进程名,获得创建进程的信息(PerformanceCounter)
- 通过进程名或进程ID获取进程句柄,窗口句柄
- 如何结束某个名字的所有进程?
- 进程1:由进程ID获取进程名字
- 根据进程ID获取经常名字 和 根据进程名字获取进程ID
- windows 根据HWND获取进程名字 和结束进程源码
- 进程管理:通过父进程ID获取子进程ID
- 根绝exe名字获取进程ID
- java中如何删除本地文件夹以及文件
- Android之根据Uri获得图片或视频文件路径(解决4.4以上版本得不到路径的情况)
- 各种dns:百度DNS/阿里DNS/114DNS/腾讯DNS/谷歌DNS/OpenDNS 对比评测
- 学习javascript数据结构(三)——集合
- java线程中volatile关键字的作用
- 通过进程ID或名字结束进程
- imageview加载 uri
- 如何简单的解决手速太快,点击button太多,而造成数据多次提交
- Unix shell范例精解学习笔记(二)
- Python进行数据的Join关联操作及从分表取数据一例
- 视频播放(四)
- Maven 的jar包冲突管理
- C语言以邻接矩阵为存储结构的图的构造以及广度优先,深度优先遍历
- 国内一线互联网公司内部面试题库