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

终止可执行(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:"
		//更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/cplus/
        //  << 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关闭.

作者:csdn博客 Spike_King

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c++
, include
, 程序
, 进程
, 代码
32
异常代码 c0000005、贪吃蛇c语言代码、c语言代码、c 代码生成器、c 源代码,以便于您获取更多的相关知识。

时间: 2024-12-31 16:36:04

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

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

通过输入程序位置启动可执行(exe)程序, 使用windows的CreateProcess()函数, 即可. 示例是调用预先生产的可执行(exe)程序. 代码: /* * main.cpp * * Created on: 2014.06.08 * Author: Spike */ /*vs 2012*/ #include <iostream> #include <windows.h> using namespace std; bool startProcess (const std

如何实现Windows XP自动关机即Shutdown.exe程序的妙用

如何实现Windows XP自动关机即Shutdown.exe程序的妙用(对于上网没时间观念的人来说还是有一定用处的.) Windows XP的关机是由Windows\System32下的Shutdown.exe程序来控制的.(如果想把Shutdown.exe复制到Windows 2000系统目录下,也可以用.) 一.比如你的电脑要在22:00关机,可以选择"开始→运行",输入"at 22:00 Shutdown -s",这样,到了22点电脑就会出现"系统

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

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

Windows系统中Java调用cmd命令及执行exe程序的方法_java

Java调用cmd命令,并输出显示信息: package com.anxin.cmd.test; import java.io.BufferedReader; import java.io.InputStreamReader; public class Command { public static void main(String[] args) { try { Runtime rt = Runtime.getRuntime(); Process pr = rt.exec("cmd /c di

asp.net Web页执行SQL程序代码

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ManageSQL.aspx.cs" Inherits="manage_ManageSQL" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/

ASP程序代码执行时间统计类

程序|统计|执行 ASP程序代码执行时间统计类 第一次写ASP类,实现功能:分段统计程序执行时间,输出统计表等. 程序代码: Class ccClsProcessTimeRecorder''ASP程序代码执行时间统计类  Private ccInti,ccIntNonceTime,ccIntDecimal Private ccIntStartTime,ccIntEndTime,ccIntNow,ccIntNonce Private ccStrInterval,ccStrEvent,ccStrTi

Windows编程:遍历程序使用的动态链接库(dll) 代码(C++)

遍历程序使用的动态链接库(dll), 首先需要遍历所有进程, 匹配进程名称与进程ID, 然后根据进程名称, 输出所有使用的库(dll). 示例中Image.exe是预先启动的程序. 代码包含遍历进程的代码, 和输出动态链接库(dll)的代码. 代码: /* * main.cpp * * Created on: 2014.06.08 * Author: Spike */ /*vs 2012*/ #include <iostream> #include <iomanip> #inclu

我有个java连接网络的程序,想要在windows登陆前执行这个程序,请教该如何做

问题描述 我有个java连接网络的程序,想要在windows开机以后,用户登陆前执行这个程序,请教该如何做 问题补充:ZavaKid 写道 解决方案 楼主可以参考这个,很可能对楼主有用: http://www.cnblogs.com/codeyu/archive/2009/09/03/1559736.html解决方案二:首先windows登陆前网卡不一定初始化好了,这时候连接网络有可能是不通的.可以考虑驱动的形式解决方案三:引用恩,就是我自己写个java程序封装成了exe可执行的程序,这个程序是

windows编程实现应用程序启动器和图标启动管理器

问题描述 windows编程实现应用程序启动器和图标启动管理器 请问图标的拖动和启动,要求限制必须用启动器才能启动和运行图标,不能脱离程序启动图标,实现思路? 解决方案 这个需要编写shell外壳扩展程序得到启动的程序然后判断是否执行.