Windows编程 - 终止可执行(exe)程序 代码(C++)

终止可执行(exe)程序 代码(C++)

本文地址: http://blog.csdn.net/caroline_wendy

终止可执行(exe)程序, 首先遍历进程, 找到进程名称对于的进程ID号, 然后根据进程ID, 终止进程.

示例代码: 包括遍历进程代码, 和关闭代码.

代码:

/*
 * main.cpp
 *
 *  Created on: 2014.06.08
 *      Author: Spike
 */

/*vs 2012*/

#include <iostream>
#include <string>
#include <map>

#include <windows.h>
#include <TlHelp32.h>

using namespace std;

bool traverseProcesses (std::map<std::string, int>& _nameID)
{
	PROCESSENTRY32 pe32;
	pe32.dwSize = sizeof(pe32);

	HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
	if(hProcessSnap == INVALID_HANDLE_VALUE) {
		std::cout << "CreateToolhelp32Snapshot Error!" << std::endl;;
		return false;
	}

	BOOL bResult =Process32First(hProcessSnap, &pe32);

	int num(0);

	while(bResult)
	{
		std::string name = pe32.szExeFile;
		int id = pe32.th32ProcessID;

		//std::cout << "[" << ++num << "] : " <<"Process Name:"
		//	<< name << "  " << "ProcessID:" << id<< std::endl;

		_nameID.insert(std::pair<string, int>(name, id)); //字典存储
		bResult = Process32Next(hProcessSnap,&pe32);
	}

	CloseHandle(hProcessSnap);

	return true;
}

bool terminateProcess (const std::string _name)
{
	DWORD dwId;

	std::map<std::string, int> nameID;

	if (!traverseProcesses(nameID)) { //变量进程
		cout << "Print Processes Error!" << endl;
	}

	/*printf("Please enter the name of process to terminal:");
	std::string name;
	cin >> name;*/

	dwId = nameID[_name];

	BOOL bRet = FALSE;

	HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwId);
	if(hProcess != NULL)
		bRet = TerminateProcess(hProcess, 0);
	CloseHandle(hProcess);

	if(bRet){
		std::cout << "Terminate Process Success!" << std::endl;
	} else {
		std::cout << "Terminate Process Error!" << std::endl;
		return false;
	}

	return true;
}

int main()
{
	const std::string program("Image.exe");

	if (!terminateProcess(program)) {
		cout << "Terminate Process Error!" << endl;
	}

	return 0;
}

注: Image.exe为启动的显示图片的程序, 当执行完成后, Image.exe关闭.

Windows编程 - 终止可执行(exe)程序 代码(C++),布布扣,bubuko.com

时间: 2024-10-18 07:46:05

Windows编程 - 终止可执行(exe)程序 代码(C++)的相关文章

Windows编程 - 启动可执行(exe)程序 代码(C++)

启动可执行(exe)程序 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 通过输入程序位置启动可执行(exe)程序, 使用windows的CreateProcess()函数, 即可. 示例是调用预先生产的可执行(exe)程序. 代码: /* * main.cpp * * Created on: 2014.06.08 * Author: Spike */ /*vs 2012*/ #include <iostream> #include <

Windows编程 - 遍历所有进程(exe) 代码(C++)

遍历所有进程(exe) 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/29381987 遍历所有进程, 即任务管理器中所有的进程目录, 包含名称和进程ID. 返回字典: Key: 进程名字, Value: 进程ID. 代码: /* * main.cpp * * Created on: 2014.06.08 * Author: Spike */ /*vs 2012*/ #include <iostream> #

windows php 5.5 执行exe 不是有效的win32程序

双击运行php-cgi.exe弹出对话框提示不是有效的win32应用程序.此为版本问题,PHP5.5版本 最低要运行于操作系统版本号最低要6.0 ,而WINDOWS 2003 系统为5.2 因此无法运行,故而提示此错误.WIN2003 下最高只能安装PHP5.4X的版本了. windows php 5.5 执行exe 不是有效的win32程序,布布扣,bubuko.com

怎样终止正在执行的程序

用MATLAB仿真LMS算法,可是程序一不小心就会溢出,程序RUN一次时间又很长,所以希望能当判断到某个数为INF时就让程序停止下来. 开始查到了快捷键:Ctrl+C,但是我知道它是不能判断的,只能手动. 之后又看到有人提到:error,return,break等函数 Error : Return:退出调用的函数,在help 中有这样的例子. Example function d = det(A) if isempty(A) d = 1; return else ... end Break:退出

在任务计划程序用Bat命令执行exe程序

@echo off :open choice /c:123 /m "1:创建,2:终止,3:删除" if errorlevel 3 goto delete if errorlevel 2 goto end if errorlevel 1 goto create :create @schtasks /create /tn "FLT_ConsolidationJob" /tr "%cd%\bin\Debug\ConsolidationJob.exe"

关于asp.net执行exe程序时权限不够的解决办法

一,本文背景 长话短说:asp.net项目中需要用到PDF转换成SWF文件,用户上传后自动调用pdf2swf.exe转换. 但有个问题,执行时权限不够,导致一直报错(滚动条一直在往下滚,刷屏中),见下图 二,解决办法 百度了一堆答案,很多说是要改IIS执行环境的,但我的情况不是这样,因为我是在VS中执行的,还没部署就已经出现错误了. 出去上了个厕所,回来无意中把进度的执行目录改成了pdf2swf.exe所在的目录,竟然一下子好了,(见下图) 其中 pdf2FlashPath 就是 pdf2swf

《Windows编程循序渐进》——对话框应用程序

使用MFC创建模态对话框 模态对话框分为两种,一种是使用API实现的模态对话框,一种是使用MFC实现的模态对话框. 举个例子: 这是因为,模态对话框的产生会屏蔽其他窗体的消息. 我们新建一个项目.再创建一个对话框: 我们的目的是点击第一个对话框中的按钮,而弹出第二个对话框.双击按钮: 注意,这里的成员函数的名称是根据Button的ID号进行重命名的. 然后还要给新添加的对话框添加类,我们可以右键添加类或者双击添加类. 回到解决方案,就可以看到MyModalDialog的cpp和h文件就出现了:

C#执行EXE程序

第一种方法:System.Diagnostics.ProcessStartInfo info =new System.Diagnostics.ProcessStartInfo(path);info.WorkingDirectory = Path.GetDirectoryName(path); System.Diagnostics.Process.Start(info);第二中方法:System.Diagnostics.Process.Start(path)第三种方法:Process p =new

Windows编程 - 开启/关闭/遍历程序的类 代码(C++)

开启/关闭/遍历程序的类 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 类包含4个函数, 启动程序, 遍历所有进程, 关闭程序, 遍历进程依赖的动态链接库. 示例: Image.exe是预先生成的可执行程序(exe), 启动程序, 间隔5秒, 关闭程序. 使用方法参加测试程序. 代码: /* * process.h * * Created on: 2014.06.08 * Author: Spike */ /*vs 2012*/ #ifnde