[Windows]_[C/C++]_[WIN32根据程序名(映像名称)终止外部程序]
2013-10-26 17:51
309 查看
场景:
1.有时候需要调用外部程序,但是外部程序有可能崩溃挂起,这样这个进程就没法结束,所以再在下次调用前需要先结束之前调用的。
2.没考虑到权限问题,应该是只能终止当前用户启动的进程.
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根据程序名(映像名称)终止外部程序]
- WIN32 根据程序名(映像名称)终止外部程序
- Windows编程 - 终止可执行(exe)程序 代码(C++)
- C++ win32 dll 引用外部CLR,加载托管程序集异常-Error 10 error LNK2019: unresolved external symbol _CLRCreateInstancet
- C++之第一个windows程序,win32 helloworld
- 使命!!用C++和win32 API写面向对象的windows程序吧!!!~~
- c++ 调用外部程序exe-ShellExecuteEx
- 用 C++ 创建简单的 Win32 服务程序
- 用 C++ 创建简单的 Win32 服务程序
- c++检测windows服务程序状态
- C++ 学习之旅 Windows程序内部运行原理
- 如何用程序得到windows的名称和版本号
- Windows程序调试----第一部分 调试策略----第2章 编写使于调试的C++代码
- Windows Gadget开发之运行外部程序
- [C++]win32输出当前系统时间函数,可用以程序计时
- windows程序开发中c++和c#的对照(2)
- windows下C++如何调用matlab程序
- Win32结构化异常处理(SEH)——终止处理程序(__try/__finally)
- Windows和Linux操作系统下Eclipse开发C/C++程序的代码提示
- C++ 学习之旅一——Windows程序内部运行原理