[Windows]_[C/C++]_[WIN32根据程序名(映像名称)终止外部程序]
来源:互联网 发布:c语言库函数的数量 编辑:程序博客网 时间:2024/06/05 08:21
场景:
1.有时候需要调用外部程序,但是外部程序有可能崩溃挂起,这样这个进程就没法结束,所以再在下次调用前需要先结束之前调用的。
2.没考虑到权限问题,应该是只能终止当前用户启动的进程.
#include <stdio.h>#include <string.h>#include <windows.h>#include <Tlhelp32.h>#include <vector>void TerminateProcessByName(PCWSTR name){ DWORD pid = 0; // Create toolhelp snapshot. HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32W process; ZeroMemory(&process, sizeof(process)); process.dwSize = sizeof(process);std::vector<DWORD> pids; // Walkthrough all processes. if (Process32FirstW(snapshot, &process)) { do { // Compare process.szExeFile based on format of name, i.e., trim file path // trim .exe if necessary, etc. if (!wcscmp(process.szExeFile, name)) { pid = process.th32ProcessID; pids.push_back(pid); } } while (Process32NextW(snapshot, &process)); } CloseHandle(snapshot);size_t size = pids.size();for(size_t i = 0; i < size; ++i){HANDLE one_process = OpenProcess(PROCESS_TERMINATE, FALSE, pids[i]);BOOL res = TerminateProcess(one_process,0);if(res){WaitForSingleObject(one_process,1000);}}}int main(int argc, char *argv[]){printf("Hello, world\n");std::vector<DWORD> pids;TerminateProcessByName(L"notepad.exe");return 0;}
- [Windows]_[C/C++]_[WIN32根据程序名(映像名称)终止外部程序]
- [C/C++]_[初级]_[通过映像名称判断进程是否存在]
- C++_简单C++程序
- Java运行外部程序-_-!...
- C程序小游戏_贪吃蛇代码
- 黑马程序员_第一个C程序
- C语言调用外部程序 名称有空格无法识别
- C开发win32程序
- C程序中函数名与宏名称同名
- Windows编程 - 终止可执行(exe)程序 代码(C++)
- c调用外部程序
- 第一个程序(C/C++)_使用Visual Studio
- [Winhttp]_[C/C++]_[使用win32 SDK的Windows HTTP Services(WinHTTP)通过代理下载网页]
- [C/C++]_[初级]_[如何编写简单有效代码,提高程序运行效率和性能]
- c/c++程序之_猜数游戏
- 1_简单的C程序反汇编及分析
- 第一个程序(C#)_使用Visual Studio
- C++Primer课后题11.33_单词本程序
- Struts2——(4)OGNL与struts标签
- Cocos2d-x——CCLabelAtlas (英文艺术文本)
- 二叉树三种遍历方式 递归与非递归实现
- Unity 3D 学习笔记
- remotely work and hire
- [Windows]_[C/C++]_[WIN32根据程序名(映像名称)终止外部程序]
- myeclipse8.5 集成svn
- SignalR推送服务在Android的实现 SignalA
- org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set
- 消息队列——The message queue
- [互联网面试笔试汇总C/C++-26] Socket 长连接与短连接,心跳(keep-alive)
- asp.net读取磁盘文件、删除实例代码
- C# where
- vc 线程的创建,暂停和结束